langchain-agentx-cli 0.8.3__tar.gz → 0.8.4__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.
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/PKG-INFO +13 -1
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/README.md +12 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/__init__.py +1 -1
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/cli.py +81 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/config.py +5 -0
- langchain-agentx-cli-0.8.4/langchain_agentx_cli/permissions/cli_tool_flags.py +109 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/permissions/factory.py +12 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/permissions/policy.py +29 -1
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/session_factory.py +3 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli.egg-info/PKG-INFO +13 -1
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli.egg-info/SOURCES.txt +1 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli.egg-info/requires.txt +1 -1
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/pyproject.toml +2 -2
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/LICENSE +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/__main__.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/app.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/auto_mode_config.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/bootstrap.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/bridge/__init__.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/bridge/adapter_config.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/bridge/agent_tool_result.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/bridge/ask_user_cli_context.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/bridge/auto_mode_config_apply.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/bridge/auto_mode_messages.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/bridge/auto_mode_sink.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/bridge/auto_mode_status.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/bridge/boundary_inspector.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/bridge/cli_l3_user_ui_queue.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/bridge/context_recovery.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/bridge/deferred_l3_user_ui.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/bridge/deny_override.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/bridge/event_visibility.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/bridge/hook_constants.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/bridge/hook_payload.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/bridge/l3_prompt_handler_config.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/bridge/memory_saved_handler.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/bridge/model_retry_format.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/bridge/model_retry_ui.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/bridge/parallel_main_text_gate.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/bridge/pending_user_questions.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/bridge/permission_mode_apply.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/bridge/permission_response_builder.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/bridge/plan_mode_apply.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/bridge/question_gather_coordinator.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/bridge/read_only_mode_apply.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/bridge/session_bridge.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/bridge/subagent_field_resolver.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/bridge/task_notification.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/bridge/tool_cancel.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/bridge/turn_cancel.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/bridge/turn_run_context.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/bridge/ui_display_context_apply.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/commands/__init__.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/commands/builtin/__init__.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/commands/builtin/auto_mode.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/commands/builtin/clear.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/commands/builtin/compact.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/commands/builtin/doctor.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/commands/builtin/grant.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/commands/builtin/grants.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/commands/builtin/help.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/commands/builtin/keybindings.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/commands/builtin/model.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/commands/builtin/permissions.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/commands/builtin/plan.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/commands/builtin/quit.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/commands/builtin/reload_permissions.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/commands/builtin/respect_gitignore.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/commands/builtin/revoke.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/commands/builtin/roots.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/commands/builtin/skills.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/commands/builtin/summary.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/commands/builtin/theme.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/commands/parser.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/commands/providers/__init__.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/commands/providers/sdk_commands.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/commands/registry.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/completion/__init__.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/completion/base.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/completion/command_source.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/completion/file_ignore_filter.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/completion/file_index_builder.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/completion/file_index_service.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/completion/file_index_worker.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/completion/file_path_source.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/completion/history_source.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/completion/skill_source.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/health_report.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/history/__init__.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/history/store.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/keybindings/__init__.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/keybindings/bindings.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/keybindings/default_bindings.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/keybindings/help_renderer.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/launch_config_validator.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/llm_config.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/memory_fork_doctor.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/observation/__init__.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/observation/audit_subscriber.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/observation/config.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/observation/failure_counts.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/observation/failure_observation.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/observation/log_rotator.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/observation/observer.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/observation/session_context.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/permissions/__init__.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/permissions/grant_scope.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/permissions/mode.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/permissions/session_grant_config.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/permissions/session_mode.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/permissions/settings_sync.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/permissions/settings_watcher.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/plan/__init__.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/plan/lifecycle.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/plan/session.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/print_mode/__init__.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/print_mode/prompt.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/print_mode/runner.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/progress/__init__.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/progress/event_receiver.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/progress/formatting.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/progress/progress_renderer.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/prompts/__init__.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/prompts/assembler.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/prompts/sections.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/prompts/system_prompt.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/screens/__init__.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/screens/keybindings_help.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/screens/repl.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/screens/skills_menu.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/session_headless.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/session_options.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/session_profile.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/startup_constants.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/state/__init__.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/state/task_store.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/tasks/__init__.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/tasks/dir_watcher.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/tasks/mapper.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/tasks/paths.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/tasks/protocol.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/tasks/reset.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/tasks/sdk_sync.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/tasks/snapshot_store.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/tasks/watcher.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/theme/__init__.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/theme/colors.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/theme/detection.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/theme/manager.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/theme/semantic_styles.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/theme/settings.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/theme/system_theme.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/theme/themes.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/theme/watcher.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/tools/__init__.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/tools/registry.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/tui/__init__.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/tui/bootstrap.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/tui/clipboard.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/tui/clipboard_image.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/tui/image_file_paste.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/tui/kill_agents_chord.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/tui/memory_kinds.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/tui/memory_layout_delegate.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/tui/memory_paths.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/tui/message_selection.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/tui/pasted_content_store.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/tui/pasted_image_store.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/tui/permissions/__init__.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/tui/permissions/ask_user_gather_dialog.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/tui/permissions/cache.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/tui/permissions/dialog.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/tui/permissions/models.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/tui/permissions/persistent_rules.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/tui/permissions/presenters/__init__.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/tui/permissions/presenters/base.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/tui/permissions/presenters/bash.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/tui/permissions/presenters/fallback.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/tui/permissions/presenters/file.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/tui/permissions/requests/__init__.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/tui/permissions/requests/ask_user_question/__init__.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/tui/permissions/requests/ask_user_question/feedback.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/tui/permissions/requests/ask_user_question/navigation_bar.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/tui/permissions/requests/ask_user_question/overlay.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/tui/permissions/requests/ask_user_question/preview_view.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/tui/permissions/requests/ask_user_question/question_view.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/tui/permissions/requests/ask_user_question/state.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/tui/permissions/requests/ask_user_question/submit_view.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/tui/permissions/requests/auto_mode_deny.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/tui/permissions/requests/base.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/tui/permissions/requests/boundary/__init__.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/tui/permissions/requests/boundary/extract.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/tui/permissions/requests/boundary/request.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/tui/permissions/requests/fallback/__init__.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/tui/permissions/requests/fallback/request.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/tui/permissions/requests/file/__init__.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/tui/permissions/requests/file/_base.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/tui/permissions/requests/file/diff.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/tui/permissions/requests/file/edit/__init__.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/tui/permissions/requests/file/edit/request.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/tui/permissions/requests/file/filesystem/__init__.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/tui/permissions/requests/file/filesystem/request.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/tui/permissions/requests/file/paths.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/tui/permissions/requests/file/write/__init__.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/tui/permissions/requests/file/write/request.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/tui/permissions/requests/plan_mode/__init__.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/tui/permissions/requests/plan_mode/request.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/tui/permissions/requests/shell/__init__.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/tui/permissions/requests/shell/bash/__init__.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/tui/permissions/requests/shell/bash/request.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/tui/permissions/requests/shell/boundary_request.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/tui/permissions/requests/shell/extract.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/tui/permissions/requests/shell/helpers.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/tui/permissions/requests/skill/__init__.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/tui/permissions/requests/skill/request.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/tui/permissions/requests/webfetch/__init__.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/tui/permissions/requests/webfetch/request.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/tui/permissions/router.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/tui/safe_screen.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/tui/session_memory_paths.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/tui/widgets/health_view.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/tui/workspace_trust.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/utils/__init__.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/utils/diff.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/utils/external_editor.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/utils/read_edit_context.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/welcome.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/widgets/__init__.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/widgets/ask_user_gather_port.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/widgets/compact_progress.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/widgets/completion_overlay.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/widgets/diff_preview.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/widgets/diff_render.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/widgets/footer.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/widgets/input_area.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/widgets/message_events.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/widgets/message_list.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/widgets/messages/__init__.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/widgets/messages/assistant_message.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/widgets/messages/auto_mode_chip.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/widgets/messages/collapsed_explore.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/widgets/messages/collapsed_explore_verbose.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/widgets/messages/context_limit_message.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/widgets/messages/error_message.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/widgets/messages/grouped_tool_use.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/widgets/messages/hook_message.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/widgets/messages/interrupted_by_user.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/widgets/messages/model_retry_message.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/widgets/messages/rendering.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/widgets/messages/stop_hook_summary.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/widgets/messages/streaming_assistant_message.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/widgets/messages/system_summary.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/widgets/messages/thinking_message.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/widgets/messages/tool_result.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/widgets/messages/user_plan_message.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/widgets/overlay_divider.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/widgets/pending_permission.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/widgets/permission_diff_frame.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/widgets/permission_inline.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/widgets/permission_keybindings.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/widgets/presentation/__init__.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/widgets/presentation/expand_hint.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/widgets/presentation/full_output.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/widgets/presentation/message_layout.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/widgets/presentation/shell_output.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/widgets/presentation/view_mode.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/widgets/projection/__init__.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/widgets/projection/accumulators/__init__.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/widgets/projection/accumulators/explore_collapse.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/widgets/projection/accumulators/grouped_tool_use.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/widgets/projection/accumulators/subagent_nest.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/widgets/projection/accumulators/subagent_progress_bucket.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/widgets/projection/accumulators/subagent_transcript_lane.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/widgets/projection/accumulators/system_summary.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/widgets/projection/accumulators/thinking_aware_explore.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/widgets/projection/accumulators/write_edit_transcript_split.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/widgets/projection/bash_explore.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/widgets/projection/classify.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/widgets/projection/explore_memory.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/widgets/projection/explore_summary.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/widgets/projection/git_operation_tracking.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/widgets/projection/hook_spinner.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/widgets/projection/projector.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/widgets/projection/render_model.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/widgets/projection/shell_progress_suffix.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/widgets/projection/thinking_round.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/widgets/renderable_mount.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/widgets/spinner.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/widgets/status_bar.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/widgets/task_panel.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/widgets/theme_picker.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/widgets/tool_result/__init__.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/widgets/tool_result/base.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/widgets/tool_result/blocked_view.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/widgets/tool_result/denial_tracking_notice.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/widgets/tool_result/error_view.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/widgets/tool_result/success_view.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/widgets/tools/__init__.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/widgets/tools/agent/__init__.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/widgets/tools/agent/progress_renderer.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/widgets/tools/agent/subagent_grouper.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/widgets/tools/agent/subagent_thinking.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/widgets/tools/agent/subagent_transcript_lane.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/widgets/tools/agent/widget.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/widgets/tools/ask_user_question/__init__.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/widgets/tools/ask_user_question/widget.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/widgets/tools/base.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/widgets/tools/bash/__init__.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/widgets/tools/bash/widget.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/widgets/tools/edit/__init__.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/widgets/tools/edit/widget.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/widgets/tools/file_edit_messages.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/widgets/tools/file_edit_rejection.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/widgets/tools/glob/__init__.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/widgets/tools/glob/widget.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/widgets/tools/grep/__init__.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/widgets/tools/grep/widget.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/widgets/tools/helpers.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/widgets/tools/read/__init__.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/widgets/tools/read/widget.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/widgets/tools/skill/__init__.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/widgets/tools/skill/widget.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/widgets/tools/webfetch/__init__.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/widgets/tools/webfetch/widget.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/widgets/tools/websearch/__init__.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/widgets/tools/websearch/widget.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/widgets/tools/write/__init__.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/widgets/tools/write/widget.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/widgets/ui/__init__.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/widgets/ui/progress.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/widgets/view_state.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/widgets/virtualization/__init__.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/widgets/virtualization/canonical_store.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/widgets/virtualization/debounce_scheduler.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/widgets/virtualization/height_cache.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/widgets/virtualization/mount_calculator.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/widgets/virtualization/scroll_quantizer.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/widgets/virtualization/slide_throttler.py +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli.egg-info/dependency_links.txt +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli.egg-info/entry_points.txt +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli.egg-info/not-zip-safe +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli.egg-info/top_level.txt +0 -0
- {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/setup.cfg +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: langchain-agentx-cli
|
|
3
|
-
Version: 0.8.
|
|
3
|
+
Version: 0.8.4
|
|
4
4
|
Summary: Terminal CLI/TUI for AgentX: migrate Claude Code Ink UI, backed by langchain-agentx-python SDK.
|
|
5
5
|
Author: GoodMood2008
|
|
6
6
|
License: Apache-2.0
|
|
@@ -63,9 +63,21 @@ agentx-code --workspace-root /path/to/project # Specify workspace
|
|
|
63
63
|
agentx-code --model claude-sonnet-4-20250514 # Specify model
|
|
64
64
|
agentx-code --provider claude | openai # Choose provider
|
|
65
65
|
agentx-code --dangerously-skip-permissions # Skip permission prompts (CC-aligned)
|
|
66
|
+
agentx-code --allowed-tools Read Grep Glob # Pre-approve tools (space or comma; CC --allowed-tools)
|
|
67
|
+
agentx-code --disallowed-tools Bash Edit # Block tools (space or comma; deny wins)
|
|
68
|
+
agentx-code --tools Read Grep Glob # Only these built-ins; others auto-denied (CC --tools)
|
|
69
|
+
agentx-code -p "summarize README.md" # One-shot print mode (headless)
|
|
66
70
|
agentx-code --show-config # Print merged config
|
|
67
71
|
```
|
|
68
72
|
|
|
73
|
+
**Read-only audit** (aligned with Claude Code CLI semantics):
|
|
74
|
+
|
|
75
|
+
```bash
|
|
76
|
+
agentx-code --permission-mode dontAsk \
|
|
77
|
+
--allowed-tools Read,Grep,Glob \
|
|
78
|
+
--disallowed-tools Bash,Edit,WebSearch,WebFetch
|
|
79
|
+
```
|
|
80
|
+
|
|
69
81
|
## Input Habits (Claude Code Compatible)
|
|
70
82
|
|
|
71
83
|
| Key | Action |
|
|
@@ -37,9 +37,21 @@ agentx-code --workspace-root /path/to/project # Specify workspace
|
|
|
37
37
|
agentx-code --model claude-sonnet-4-20250514 # Specify model
|
|
38
38
|
agentx-code --provider claude | openai # Choose provider
|
|
39
39
|
agentx-code --dangerously-skip-permissions # Skip permission prompts (CC-aligned)
|
|
40
|
+
agentx-code --allowed-tools Read Grep Glob # Pre-approve tools (space or comma; CC --allowed-tools)
|
|
41
|
+
agentx-code --disallowed-tools Bash Edit # Block tools (space or comma; deny wins)
|
|
42
|
+
agentx-code --tools Read Grep Glob # Only these built-ins; others auto-denied (CC --tools)
|
|
43
|
+
agentx-code -p "summarize README.md" # One-shot print mode (headless)
|
|
40
44
|
agentx-code --show-config # Print merged config
|
|
41
45
|
```
|
|
42
46
|
|
|
47
|
+
**Read-only audit** (aligned with Claude Code CLI semantics):
|
|
48
|
+
|
|
49
|
+
```bash
|
|
50
|
+
agentx-code --permission-mode dontAsk \
|
|
51
|
+
--allowed-tools Read,Grep,Glob \
|
|
52
|
+
--disallowed-tools Bash,Edit,WebSearch,WebFetch
|
|
53
|
+
```
|
|
54
|
+
|
|
43
55
|
## Input Habits (Claude Code Compatible)
|
|
44
56
|
|
|
45
57
|
| Key | Action |
|
|
@@ -29,6 +29,10 @@ from langchain_agentx_cli.llm_config import (
|
|
|
29
29
|
resolve_llm_config,
|
|
30
30
|
user_config_path,
|
|
31
31
|
)
|
|
32
|
+
from langchain_agentx_cli.permissions.cli_tool_flags import (
|
|
33
|
+
merge_cli_tool_flag_values,
|
|
34
|
+
resolve_base_tools_keep_set,
|
|
35
|
+
)
|
|
32
36
|
from langchain_agentx_cli.permissions.mode import normalize_permission_mode
|
|
33
37
|
from langchain_agentx_cli.print_mode.prompt import PrintPromptError, resolve_print_prompt
|
|
34
38
|
from langchain_agentx_cli.session_profile import non_tty_allowed_without_print
|
|
@@ -74,6 +78,9 @@ class CliEntry:
|
|
|
74
78
|
extra_write_roots: tuple[Path, ...] = (),
|
|
75
79
|
startup_check: StartupCheckMode = "quiet",
|
|
76
80
|
respect_gitignore: bool | None = None,
|
|
81
|
+
allowed_tools: tuple[str, ...] = (),
|
|
82
|
+
disallowed_tools: tuple[str, ...] = (),
|
|
83
|
+
base_tools: tuple[str, ...] | None = None,
|
|
77
84
|
) -> int:
|
|
78
85
|
# Mode 到 agent_home 的映射(优先级高于 --agent-home)
|
|
79
86
|
if mode:
|
|
@@ -91,6 +98,9 @@ class CliEntry:
|
|
|
91
98
|
extra_read_roots=extra_read_roots,
|
|
92
99
|
extra_write_roots=extra_write_roots,
|
|
93
100
|
respect_gitignore_cli=respect_gitignore,
|
|
101
|
+
allowed_tools=allowed_tools,
|
|
102
|
+
disallowed_tools=disallowed_tools,
|
|
103
|
+
base_tools=base_tools,
|
|
94
104
|
)
|
|
95
105
|
except CliEnvironmentError as exc:
|
|
96
106
|
EnvironmentChecker.emit_error(str(exc))
|
|
@@ -205,6 +215,9 @@ class CliEntry:
|
|
|
205
215
|
extra_read_roots: tuple[Path, ...] = (),
|
|
206
216
|
extra_write_roots: tuple[Path, ...] = (),
|
|
207
217
|
respect_gitignore_cli: bool | None = None,
|
|
218
|
+
allowed_tools: tuple[str, ...] = (),
|
|
219
|
+
disallowed_tools: tuple[str, ...] = (),
|
|
220
|
+
base_tools: tuple[str, ...] | None = None,
|
|
208
221
|
) -> ReplLaunchConfig:
|
|
209
222
|
self._checker.check_sdk_importable()
|
|
210
223
|
|
|
@@ -264,6 +277,9 @@ class CliEntry:
|
|
|
264
277
|
write_roots=write_roots,
|
|
265
278
|
enable_session_memory=resolve_enable_session_memory(None),
|
|
266
279
|
respect_gitignore=resolved_respect_gitignore,
|
|
280
|
+
cli_allowed_tools=allowed_tools,
|
|
281
|
+
cli_disallowed_tools=disallowed_tools,
|
|
282
|
+
cli_base_tools=base_tools,
|
|
267
283
|
)
|
|
268
284
|
|
|
269
285
|
def _resolve_initial_permission_mode(
|
|
@@ -316,6 +332,33 @@ class CliEntry:
|
|
|
316
332
|
_CONFIG_PATH = user_config_path()
|
|
317
333
|
|
|
318
334
|
|
|
335
|
+
class SpaceSeparatedOption(click.Option):
|
|
336
|
+
"""对齐 CC ``<tools...>``:一个 flag 吃到下一个 ``-`` 选项(未加引号的空格分隔)。"""
|
|
337
|
+
|
|
338
|
+
def add_to_parser(self, parser, ctx): # noqa: ANN001
|
|
339
|
+
result = super().add_to_parser(parser, ctx)
|
|
340
|
+
seen: set[int] = set()
|
|
341
|
+
for name in self.opts:
|
|
342
|
+
opt_parser = parser._long_opt.get(name) or parser._short_opt.get(name)
|
|
343
|
+
if opt_parser is None or id(opt_parser) in seen:
|
|
344
|
+
continue
|
|
345
|
+
seen.add(id(opt_parser))
|
|
346
|
+
original = opt_parser.process
|
|
347
|
+
|
|
348
|
+
def process(value, state, _original=original): # noqa: ANN001
|
|
349
|
+
values = [value]
|
|
350
|
+
while state.rargs:
|
|
351
|
+
nxt = state.rargs[0]
|
|
352
|
+
if nxt.startswith("-") and nxt != "-":
|
|
353
|
+
break
|
|
354
|
+
values.append(state.rargs.pop(0))
|
|
355
|
+
for item in values:
|
|
356
|
+
_original(item, state)
|
|
357
|
+
|
|
358
|
+
opt_parser.process = process
|
|
359
|
+
return result
|
|
360
|
+
|
|
361
|
+
|
|
319
362
|
@click.command(context_settings={"help_option_names": ["-h", "--help"]})
|
|
320
363
|
@click.option(
|
|
321
364
|
"--workspace-root",
|
|
@@ -405,6 +448,38 @@ _CONFIG_PATH = user_config_path()
|
|
|
405
448
|
default=None,
|
|
406
449
|
help="启动时权限模式(对齐 CC --permission-mode;auto 启用 Auto Mode)",
|
|
407
450
|
)
|
|
451
|
+
@click.option(
|
|
452
|
+
"--allowed-tools",
|
|
453
|
+
"--allowedTools",
|
|
454
|
+
"allowed_tools_raw",
|
|
455
|
+
cls=SpaceSeparatedOption,
|
|
456
|
+
multiple=True,
|
|
457
|
+
help=(
|
|
458
|
+
"工具白名单(对齐 CC --allowed-tools;空格或逗号分隔,可重复;"
|
|
459
|
+
"如 Bash Edit、Bash(git:*))"
|
|
460
|
+
),
|
|
461
|
+
)
|
|
462
|
+
@click.option(
|
|
463
|
+
"--disallowed-tools",
|
|
464
|
+
"--disallowedTools",
|
|
465
|
+
"disallowed_tools_raw",
|
|
466
|
+
cls=SpaceSeparatedOption,
|
|
467
|
+
multiple=True,
|
|
468
|
+
help=(
|
|
469
|
+
"工具黑名单(对齐 CC --disallowed-tools;空格或逗号分隔;"
|
|
470
|
+
"优先级高于 allowed)"
|
|
471
|
+
),
|
|
472
|
+
)
|
|
473
|
+
@click.option(
|
|
474
|
+
"--tools",
|
|
475
|
+
"base_tools_raw",
|
|
476
|
+
cls=SpaceSeparatedOption,
|
|
477
|
+
multiple=True,
|
|
478
|
+
help=(
|
|
479
|
+
"可用内置工具集(对齐 CC --tools)。"
|
|
480
|
+
'"" 禁用全部;default 使用全部;否则只保留列出的工具,其余自动 deny'
|
|
481
|
+
),
|
|
482
|
+
)
|
|
408
483
|
@click.option(
|
|
409
484
|
"--debug",
|
|
410
485
|
"-d",
|
|
@@ -473,6 +548,9 @@ def main(
|
|
|
473
548
|
extra_read_roots: tuple[Path, ...],
|
|
474
549
|
extra_write_roots: tuple[Path, ...],
|
|
475
550
|
respect_gitignore: bool | None,
|
|
551
|
+
allowed_tools_raw: tuple[str, ...],
|
|
552
|
+
disallowed_tools_raw: tuple[str, ...],
|
|
553
|
+
base_tools_raw: tuple[str, ...],
|
|
476
554
|
check_env: bool,
|
|
477
555
|
no_check_env: bool,
|
|
478
556
|
prompt_positional: str | None,
|
|
@@ -507,5 +585,8 @@ def main(
|
|
|
507
585
|
extra_write_roots=extra_write_roots,
|
|
508
586
|
startup_check=startup_check,
|
|
509
587
|
respect_gitignore=respect_gitignore,
|
|
588
|
+
allowed_tools=merge_cli_tool_flag_values(allowed_tools_raw),
|
|
589
|
+
disallowed_tools=merge_cli_tool_flag_values(disallowed_tools_raw),
|
|
590
|
+
base_tools=resolve_base_tools_keep_set(base_tools_raw),
|
|
510
591
|
)
|
|
511
592
|
raise SystemExit(code)
|
|
@@ -175,3 +175,8 @@ class ReplLaunchConfig:
|
|
|
175
175
|
runtime_cwd: Path | None = None
|
|
176
176
|
# @ 路径补全 respect .gitignore(CLI-D3;默认 true,可由 config.json / CLI flag 覆盖)
|
|
177
177
|
respect_gitignore: bool = True
|
|
178
|
+
# CC --allowed-tools / --disallowed-tools(经 SDK apply_cli_permission_rules → cliArg)
|
|
179
|
+
cli_allowed_tools: tuple[str, ...] = field(default_factory=tuple)
|
|
180
|
+
cli_disallowed_tools: tuple[str, ...] = field(default_factory=tuple)
|
|
181
|
+
# CC --tools:None=未限制;()=禁用全部内置;非空=只保留这些工具
|
|
182
|
+
cli_base_tools: tuple[str, ...] | None = None
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
"""
|
|
2
|
+
permissions/cli_tool_flags.py — argv 工具名单解析(CC parseToolListFromCLI / --tools)
|
|
3
|
+
|
|
4
|
+
职责:
|
|
5
|
+
click 收集的 flag 值交给 SDK parse_tool_list_from_cli;
|
|
6
|
+
--tools 对照 CC parseBaseToolsFromCLI:未列出的内置工具并入 deny。
|
|
7
|
+
|
|
8
|
+
链路位置:
|
|
9
|
+
cli.py → ReplLaunchConfig → CliPolicyConfigBuilder / CliLoaderFactory。
|
|
10
|
+
"""
|
|
11
|
+
|
|
12
|
+
from __future__ import annotations
|
|
13
|
+
|
|
14
|
+
from collections.abc import Sequence
|
|
15
|
+
|
|
16
|
+
from langchain_agentx.tools.registry_names import (
|
|
17
|
+
Agent,
|
|
18
|
+
AskUserQuestion,
|
|
19
|
+
Bash,
|
|
20
|
+
Edit,
|
|
21
|
+
Glob,
|
|
22
|
+
Grep,
|
|
23
|
+
Read,
|
|
24
|
+
Skill,
|
|
25
|
+
TaskCreate,
|
|
26
|
+
TaskGet,
|
|
27
|
+
TaskList,
|
|
28
|
+
TaskUpdate,
|
|
29
|
+
WebFetch,
|
|
30
|
+
WebSearch,
|
|
31
|
+
Write,
|
|
32
|
+
)
|
|
33
|
+
from langchain_agentx.tool_runtime.permission_cli_rules import parse_tool_list_from_cli
|
|
34
|
+
|
|
35
|
+
# CliToolRegistry.register_all 会注册的工具(WebSearch 无后端时不挂载,deny 仍无害)。
|
|
36
|
+
CLI_BASE_TOOL_NAMES: tuple[str, ...] = (
|
|
37
|
+
Read,
|
|
38
|
+
Write,
|
|
39
|
+
Edit,
|
|
40
|
+
Bash,
|
|
41
|
+
Grep,
|
|
42
|
+
Glob,
|
|
43
|
+
AskUserQuestion,
|
|
44
|
+
TaskList,
|
|
45
|
+
TaskCreate,
|
|
46
|
+
TaskGet,
|
|
47
|
+
TaskUpdate,
|
|
48
|
+
WebSearch,
|
|
49
|
+
WebFetch,
|
|
50
|
+
Skill,
|
|
51
|
+
Agent,
|
|
52
|
+
)
|
|
53
|
+
|
|
54
|
+
_LEGACY_TASK = "Task"
|
|
55
|
+
|
|
56
|
+
|
|
57
|
+
def merge_cli_tool_flag_values(values: Sequence[str] | None) -> tuple[str, ...]:
|
|
58
|
+
"""空输入 → 空 tuple;否则 SDK 解析(逗号/空格,括号内不切)后去重保序。"""
|
|
59
|
+
if not values:
|
|
60
|
+
return ()
|
|
61
|
+
parsed = parse_tool_list_from_cli(list(values))
|
|
62
|
+
seen: set[str] = set()
|
|
63
|
+
out: list[str] = []
|
|
64
|
+
for item in parsed:
|
|
65
|
+
if item in seen:
|
|
66
|
+
continue
|
|
67
|
+
seen.add(item)
|
|
68
|
+
out.append(item)
|
|
69
|
+
return tuple(out)
|
|
70
|
+
|
|
71
|
+
|
|
72
|
+
def resolve_base_tools_keep_set(raw: Sequence[str] | None) -> tuple[str, ...] | None:
|
|
73
|
+
"""对齐 CC parseBaseToolsFromCLI。
|
|
74
|
+
|
|
75
|
+
None:未传 ``--tools``,或值为 ``default``(不额外 deny)。
|
|
76
|
+
():传了空名单(``--tools ""``)→ 禁用全部内置工具。
|
|
77
|
+
非空:保留这些工具名(``Task`` 规范为 ``Agent``)。
|
|
78
|
+
"""
|
|
79
|
+
if not raw:
|
|
80
|
+
return None
|
|
81
|
+
joined = " ".join(raw).strip()
|
|
82
|
+
if joined.lower() == "default":
|
|
83
|
+
return None
|
|
84
|
+
parsed = merge_cli_tool_flag_values(raw)
|
|
85
|
+
seen: set[str] = set()
|
|
86
|
+
out: list[str] = []
|
|
87
|
+
for item in parsed:
|
|
88
|
+
name = Agent if item == _LEGACY_TASK else item
|
|
89
|
+
if name in seen:
|
|
90
|
+
continue
|
|
91
|
+
seen.add(name)
|
|
92
|
+
out.append(name)
|
|
93
|
+
return tuple(out)
|
|
94
|
+
|
|
95
|
+
|
|
96
|
+
def extra_disallowed_for_base_tools(keep: tuple[str, ...] | None) -> tuple[str, ...]:
|
|
97
|
+
"""``--tools`` 未列出的内置工具名(工具级 deny,不含规则内容)。"""
|
|
98
|
+
if keep is None:
|
|
99
|
+
return ()
|
|
100
|
+
kept = {item.split("(", 1)[0] for item in keep}
|
|
101
|
+
return tuple(name for name in CLI_BASE_TOOL_NAMES if name not in kept)
|
|
102
|
+
|
|
103
|
+
|
|
104
|
+
__all__ = [
|
|
105
|
+
"CLI_BASE_TOOL_NAMES",
|
|
106
|
+
"extra_disallowed_for_base_tools",
|
|
107
|
+
"merge_cli_tool_flag_values",
|
|
108
|
+
"resolve_base_tools_keep_set",
|
|
109
|
+
]
|
|
@@ -63,6 +63,9 @@ class CliLoaderFactory:
|
|
|
63
63
|
auto_mode_sink: AutoModeEventSink | None = None,
|
|
64
64
|
permission_mode: str = "default",
|
|
65
65
|
auto_mode_config: AutoModeConfig | None = None,
|
|
66
|
+
allowed_tools: tuple[str, ...] = (),
|
|
67
|
+
disallowed_tools: tuple[str, ...] = (),
|
|
68
|
+
base_tools: tuple[str, ...] | None = None,
|
|
66
69
|
) -> ToolRuntimeLoader:
|
|
67
70
|
wr = Path(workspace_root).resolve()
|
|
68
71
|
loader = self._build_loader(
|
|
@@ -76,6 +79,9 @@ class CliLoaderFactory:
|
|
|
76
79
|
auto_mode_sink=auto_mode_sink,
|
|
77
80
|
auto_mode_config=auto_mode_config,
|
|
78
81
|
permission_mode=permission_mode,
|
|
82
|
+
allowed_tools=allowed_tools,
|
|
83
|
+
disallowed_tools=disallowed_tools,
|
|
84
|
+
base_tools=base_tools,
|
|
79
85
|
)
|
|
80
86
|
self._tool_registry_cls(
|
|
81
87
|
loader,
|
|
@@ -97,6 +103,9 @@ class CliLoaderFactory:
|
|
|
97
103
|
auto_mode_sink: AutoModeEventSink | None,
|
|
98
104
|
auto_mode_config: AutoModeConfig | None = None,
|
|
99
105
|
permission_mode: str = "default",
|
|
106
|
+
allowed_tools: tuple[str, ...] = (),
|
|
107
|
+
disallowed_tools: tuple[str, ...] = (),
|
|
108
|
+
base_tools: tuple[str, ...] | None = None,
|
|
100
109
|
) -> ToolRuntimeLoader:
|
|
101
110
|
if skip_permissions:
|
|
102
111
|
# bypass 专用:极简 headless loader(对齐 CC --dangerously-skip-permissions)。
|
|
@@ -107,6 +116,9 @@ class CliLoaderFactory:
|
|
|
107
116
|
session_cwd=session_cwd,
|
|
108
117
|
auto_mode=auto_mode_config,
|
|
109
118
|
permission_mode=permission_mode,
|
|
119
|
+
allowed_tools=allowed_tools,
|
|
120
|
+
disallowed_tools=disallowed_tools,
|
|
121
|
+
base_tools=base_tools,
|
|
110
122
|
)
|
|
111
123
|
hook = build_auto_mode_hook(
|
|
112
124
|
policy_config=cfg,
|
{langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/permissions/policy.py
RENAMED
|
@@ -31,6 +31,7 @@ from langchain_agentx.tool_runtime.permission_decision import (
|
|
|
31
31
|
attach_decision_reason,
|
|
32
32
|
make_decision_reason,
|
|
33
33
|
)
|
|
34
|
+
from langchain_agentx.tool_runtime.permission_cli_rules import apply_cli_permission_rules
|
|
34
35
|
from langchain_agentx.tool_runtime.policy import (
|
|
35
36
|
DefaultPolicyEngine,
|
|
36
37
|
PolicyEngine,
|
|
@@ -42,6 +43,7 @@ from langchain_agentx_cli.permissions.mode import (
|
|
|
42
43
|
normalize_permission_mode,
|
|
43
44
|
permission_mode_implies_read_only,
|
|
44
45
|
)
|
|
46
|
+
from langchain_agentx_cli.permissions.cli_tool_flags import extra_disallowed_for_base_tools
|
|
45
47
|
|
|
46
48
|
# 对齐 D05 / CC:敏感路径硬拒绝(不弹窗)
|
|
47
49
|
CLI_DENY_GLOBS: tuple[str, ...] = (
|
|
@@ -82,6 +84,9 @@ class CliPolicyConfigBuilder:
|
|
|
82
84
|
session_cwd: Path | str | None = None,
|
|
83
85
|
auto_mode: AutoModeConfig | None = None,
|
|
84
86
|
permission_mode: str = "default",
|
|
87
|
+
allowed_tools: tuple[str, ...] = (),
|
|
88
|
+
disallowed_tools: tuple[str, ...] = (),
|
|
89
|
+
base_tools: tuple[str, ...] | None = None,
|
|
85
90
|
) -> ToolPolicyConfig:
|
|
86
91
|
root = Path(workspace_root).resolve()
|
|
87
92
|
effective_cwd = Path(session_cwd).resolve() if session_cwd is not None else root
|
|
@@ -112,7 +117,30 @@ class CliPolicyConfigBuilder:
|
|
|
112
117
|
auto_mode=auto_mode if auto_mode is not None else AutoModeConfig(),
|
|
113
118
|
project_memory_layout=layout,
|
|
114
119
|
)
|
|
115
|
-
|
|
120
|
+
layout_base = base.with_project_memory_layout(layout)
|
|
121
|
+
merged_disallowed = _merge_tool_names(
|
|
122
|
+
disallowed_tools,
|
|
123
|
+
extra_disallowed_for_base_tools(base_tools),
|
|
124
|
+
)
|
|
125
|
+
if not allowed_tools and not merged_disallowed:
|
|
126
|
+
return layout_base
|
|
127
|
+
return apply_cli_permission_rules(
|
|
128
|
+
layout_base,
|
|
129
|
+
allowed=allowed_tools if allowed_tools else None,
|
|
130
|
+
disallowed=merged_disallowed if merged_disallowed else None,
|
|
131
|
+
)
|
|
132
|
+
|
|
133
|
+
|
|
134
|
+
def _merge_tool_names(*groups: tuple[str, ...]) -> tuple[str, ...]:
|
|
135
|
+
seen: set[str] = set()
|
|
136
|
+
out: list[str] = []
|
|
137
|
+
for group in groups:
|
|
138
|
+
for item in group:
|
|
139
|
+
if item in seen:
|
|
140
|
+
continue
|
|
141
|
+
seen.add(item)
|
|
142
|
+
out.append(item)
|
|
143
|
+
return tuple(out)
|
|
116
144
|
|
|
117
145
|
|
|
118
146
|
def memory_layout_loop_roots(
|
{langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/session_factory.py
RENAMED
|
@@ -132,6 +132,9 @@ async def open_agent_session(
|
|
|
132
132
|
auto_mode_sink=auto_mode_sink,
|
|
133
133
|
auto_mode_config=auto_mode_config,
|
|
134
134
|
permission_mode=initial_mode,
|
|
135
|
+
allowed_tools=launch_config.cli_allowed_tools,
|
|
136
|
+
disallowed_tools=launch_config.cli_disallowed_tools,
|
|
137
|
+
base_tools=launch_config.cli_base_tools,
|
|
135
138
|
)
|
|
136
139
|
|
|
137
140
|
read_roots_tuple = tuple(str(p) for p in launch_config.read_roots) if launch_config.read_roots else ()
|
{langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli.egg-info/PKG-INFO
RENAMED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: langchain-agentx-cli
|
|
3
|
-
Version: 0.8.
|
|
3
|
+
Version: 0.8.4
|
|
4
4
|
Summary: Terminal CLI/TUI for AgentX: migrate Claude Code Ink UI, backed by langchain-agentx-python SDK.
|
|
5
5
|
Author: GoodMood2008
|
|
6
6
|
License: Apache-2.0
|
|
@@ -63,9 +63,21 @@ agentx-code --workspace-root /path/to/project # Specify workspace
|
|
|
63
63
|
agentx-code --model claude-sonnet-4-20250514 # Specify model
|
|
64
64
|
agentx-code --provider claude | openai # Choose provider
|
|
65
65
|
agentx-code --dangerously-skip-permissions # Skip permission prompts (CC-aligned)
|
|
66
|
+
agentx-code --allowed-tools Read Grep Glob # Pre-approve tools (space or comma; CC --allowed-tools)
|
|
67
|
+
agentx-code --disallowed-tools Bash Edit # Block tools (space or comma; deny wins)
|
|
68
|
+
agentx-code --tools Read Grep Glob # Only these built-ins; others auto-denied (CC --tools)
|
|
69
|
+
agentx-code -p "summarize README.md" # One-shot print mode (headless)
|
|
66
70
|
agentx-code --show-config # Print merged config
|
|
67
71
|
```
|
|
68
72
|
|
|
73
|
+
**Read-only audit** (aligned with Claude Code CLI semantics):
|
|
74
|
+
|
|
75
|
+
```bash
|
|
76
|
+
agentx-code --permission-mode dontAsk \
|
|
77
|
+
--allowed-tools Read,Grep,Glob \
|
|
78
|
+
--disallowed-tools Bash,Edit,WebSearch,WebFetch
|
|
79
|
+
```
|
|
80
|
+
|
|
69
81
|
## Input Habits (Claude Code Compatible)
|
|
70
82
|
|
|
71
83
|
| Key | Action |
|
{langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli.egg-info/SOURCES.txt
RENAMED
|
@@ -109,6 +109,7 @@ langchain_agentx_cli/observation/log_rotator.py
|
|
|
109
109
|
langchain_agentx_cli/observation/observer.py
|
|
110
110
|
langchain_agentx_cli/observation/session_context.py
|
|
111
111
|
langchain_agentx_cli/permissions/__init__.py
|
|
112
|
+
langchain_agentx_cli/permissions/cli_tool_flags.py
|
|
112
113
|
langchain_agentx_cli/permissions/factory.py
|
|
113
114
|
langchain_agentx_cli/permissions/grant_scope.py
|
|
114
115
|
langchain_agentx_cli/permissions/mode.py
|
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "langchain-agentx-cli"
|
|
7
|
-
version = "0.8.
|
|
7
|
+
version = "0.8.4"
|
|
8
8
|
description = "Terminal CLI/TUI for AgentX: migrate Claude Code Ink UI, backed by langchain-agentx-python SDK."
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
requires-python = ">=3.11"
|
|
@@ -26,7 +26,7 @@ classifiers = [
|
|
|
26
26
|
"Topic :: Software Development",
|
|
27
27
|
]
|
|
28
28
|
dependencies = [
|
|
29
|
-
"langchain-agentx-python>=2.
|
|
29
|
+
"langchain-agentx-python>=2.3.0",
|
|
30
30
|
"click>=8.1",
|
|
31
31
|
"markdown-it-py>=2.0",
|
|
32
32
|
"textual>=0.79.0",
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/auto_mode_config.py
RENAMED
|
File without changes
|
|
File without changes
|
{langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/bridge/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/bridge/tool_cancel.py
RENAMED
|
File without changes
|
{langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/bridge/turn_cancel.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/commands/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/commands/parser.py
RENAMED
|
File without changes
|