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.
Files changed (343) hide show
  1. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/PKG-INFO +13 -1
  2. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/README.md +12 -0
  3. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/__init__.py +1 -1
  4. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/cli.py +81 -0
  5. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/config.py +5 -0
  6. langchain-agentx-cli-0.8.4/langchain_agentx_cli/permissions/cli_tool_flags.py +109 -0
  7. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/permissions/factory.py +12 -0
  8. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/permissions/policy.py +29 -1
  9. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/session_factory.py +3 -0
  10. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli.egg-info/PKG-INFO +13 -1
  11. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli.egg-info/SOURCES.txt +1 -0
  12. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli.egg-info/requires.txt +1 -1
  13. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/pyproject.toml +2 -2
  14. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/LICENSE +0 -0
  15. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/__main__.py +0 -0
  16. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/app.py +0 -0
  17. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/auto_mode_config.py +0 -0
  18. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/bootstrap.py +0 -0
  19. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/bridge/__init__.py +0 -0
  20. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/bridge/adapter_config.py +0 -0
  21. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/bridge/agent_tool_result.py +0 -0
  22. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/bridge/ask_user_cli_context.py +0 -0
  23. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/bridge/auto_mode_config_apply.py +0 -0
  24. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/bridge/auto_mode_messages.py +0 -0
  25. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/bridge/auto_mode_sink.py +0 -0
  26. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/bridge/auto_mode_status.py +0 -0
  27. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/bridge/boundary_inspector.py +0 -0
  28. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/bridge/cli_l3_user_ui_queue.py +0 -0
  29. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/bridge/context_recovery.py +0 -0
  30. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/bridge/deferred_l3_user_ui.py +0 -0
  31. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/bridge/deny_override.py +0 -0
  32. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/bridge/event_visibility.py +0 -0
  33. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/bridge/hook_constants.py +0 -0
  34. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/bridge/hook_payload.py +0 -0
  35. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/bridge/l3_prompt_handler_config.py +0 -0
  36. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/bridge/memory_saved_handler.py +0 -0
  37. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/bridge/model_retry_format.py +0 -0
  38. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/bridge/model_retry_ui.py +0 -0
  39. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/bridge/parallel_main_text_gate.py +0 -0
  40. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/bridge/pending_user_questions.py +0 -0
  41. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/bridge/permission_mode_apply.py +0 -0
  42. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/bridge/permission_response_builder.py +0 -0
  43. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/bridge/plan_mode_apply.py +0 -0
  44. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/bridge/question_gather_coordinator.py +0 -0
  45. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/bridge/read_only_mode_apply.py +0 -0
  46. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/bridge/session_bridge.py +0 -0
  47. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/bridge/subagent_field_resolver.py +0 -0
  48. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/bridge/task_notification.py +0 -0
  49. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/bridge/tool_cancel.py +0 -0
  50. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/bridge/turn_cancel.py +0 -0
  51. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/bridge/turn_run_context.py +0 -0
  52. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/bridge/ui_display_context_apply.py +0 -0
  53. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/commands/__init__.py +0 -0
  54. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/commands/builtin/__init__.py +0 -0
  55. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/commands/builtin/auto_mode.py +0 -0
  56. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/commands/builtin/clear.py +0 -0
  57. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/commands/builtin/compact.py +0 -0
  58. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/commands/builtin/doctor.py +0 -0
  59. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/commands/builtin/grant.py +0 -0
  60. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/commands/builtin/grants.py +0 -0
  61. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/commands/builtin/help.py +0 -0
  62. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/commands/builtin/keybindings.py +0 -0
  63. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/commands/builtin/model.py +0 -0
  64. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/commands/builtin/permissions.py +0 -0
  65. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/commands/builtin/plan.py +0 -0
  66. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/commands/builtin/quit.py +0 -0
  67. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/commands/builtin/reload_permissions.py +0 -0
  68. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/commands/builtin/respect_gitignore.py +0 -0
  69. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/commands/builtin/revoke.py +0 -0
  70. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/commands/builtin/roots.py +0 -0
  71. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/commands/builtin/skills.py +0 -0
  72. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/commands/builtin/summary.py +0 -0
  73. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/commands/builtin/theme.py +0 -0
  74. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/commands/parser.py +0 -0
  75. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/commands/providers/__init__.py +0 -0
  76. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/commands/providers/sdk_commands.py +0 -0
  77. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/commands/registry.py +0 -0
  78. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/completion/__init__.py +0 -0
  79. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/completion/base.py +0 -0
  80. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/completion/command_source.py +0 -0
  81. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/completion/file_ignore_filter.py +0 -0
  82. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/completion/file_index_builder.py +0 -0
  83. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/completion/file_index_service.py +0 -0
  84. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/completion/file_index_worker.py +0 -0
  85. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/completion/file_path_source.py +0 -0
  86. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/completion/history_source.py +0 -0
  87. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/completion/skill_source.py +0 -0
  88. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/health_report.py +0 -0
  89. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/history/__init__.py +0 -0
  90. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/history/store.py +0 -0
  91. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/keybindings/__init__.py +0 -0
  92. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/keybindings/bindings.py +0 -0
  93. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/keybindings/default_bindings.py +0 -0
  94. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/keybindings/help_renderer.py +0 -0
  95. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/launch_config_validator.py +0 -0
  96. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/llm_config.py +0 -0
  97. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/memory_fork_doctor.py +0 -0
  98. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/observation/__init__.py +0 -0
  99. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/observation/audit_subscriber.py +0 -0
  100. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/observation/config.py +0 -0
  101. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/observation/failure_counts.py +0 -0
  102. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/observation/failure_observation.py +0 -0
  103. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/observation/log_rotator.py +0 -0
  104. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/observation/observer.py +0 -0
  105. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/observation/session_context.py +0 -0
  106. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/permissions/__init__.py +0 -0
  107. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/permissions/grant_scope.py +0 -0
  108. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/permissions/mode.py +0 -0
  109. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/permissions/session_grant_config.py +0 -0
  110. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/permissions/session_mode.py +0 -0
  111. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/permissions/settings_sync.py +0 -0
  112. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/permissions/settings_watcher.py +0 -0
  113. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/plan/__init__.py +0 -0
  114. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/plan/lifecycle.py +0 -0
  115. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/plan/session.py +0 -0
  116. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/print_mode/__init__.py +0 -0
  117. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/print_mode/prompt.py +0 -0
  118. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/print_mode/runner.py +0 -0
  119. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/progress/__init__.py +0 -0
  120. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/progress/event_receiver.py +0 -0
  121. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/progress/formatting.py +0 -0
  122. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/progress/progress_renderer.py +0 -0
  123. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/prompts/__init__.py +0 -0
  124. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/prompts/assembler.py +0 -0
  125. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/prompts/sections.py +0 -0
  126. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/prompts/system_prompt.py +0 -0
  127. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/screens/__init__.py +0 -0
  128. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/screens/keybindings_help.py +0 -0
  129. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/screens/repl.py +0 -0
  130. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/screens/skills_menu.py +0 -0
  131. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/session_headless.py +0 -0
  132. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/session_options.py +0 -0
  133. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/session_profile.py +0 -0
  134. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/startup_constants.py +0 -0
  135. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/state/__init__.py +0 -0
  136. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/state/task_store.py +0 -0
  137. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/tasks/__init__.py +0 -0
  138. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/tasks/dir_watcher.py +0 -0
  139. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/tasks/mapper.py +0 -0
  140. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/tasks/paths.py +0 -0
  141. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/tasks/protocol.py +0 -0
  142. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/tasks/reset.py +0 -0
  143. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/tasks/sdk_sync.py +0 -0
  144. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/tasks/snapshot_store.py +0 -0
  145. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/tasks/watcher.py +0 -0
  146. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/theme/__init__.py +0 -0
  147. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/theme/colors.py +0 -0
  148. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/theme/detection.py +0 -0
  149. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/theme/manager.py +0 -0
  150. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/theme/semantic_styles.py +0 -0
  151. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/theme/settings.py +0 -0
  152. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/theme/system_theme.py +0 -0
  153. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/theme/themes.py +0 -0
  154. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/theme/watcher.py +0 -0
  155. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/tools/__init__.py +0 -0
  156. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/tools/registry.py +0 -0
  157. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/tui/__init__.py +0 -0
  158. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/tui/bootstrap.py +0 -0
  159. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/tui/clipboard.py +0 -0
  160. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/tui/clipboard_image.py +0 -0
  161. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/tui/image_file_paste.py +0 -0
  162. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/tui/kill_agents_chord.py +0 -0
  163. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/tui/memory_kinds.py +0 -0
  164. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/tui/memory_layout_delegate.py +0 -0
  165. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/tui/memory_paths.py +0 -0
  166. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/tui/message_selection.py +0 -0
  167. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/tui/pasted_content_store.py +0 -0
  168. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/tui/pasted_image_store.py +0 -0
  169. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/tui/permissions/__init__.py +0 -0
  170. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/tui/permissions/ask_user_gather_dialog.py +0 -0
  171. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/tui/permissions/cache.py +0 -0
  172. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/tui/permissions/dialog.py +0 -0
  173. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/tui/permissions/models.py +0 -0
  174. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/tui/permissions/persistent_rules.py +0 -0
  175. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/tui/permissions/presenters/__init__.py +0 -0
  176. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/tui/permissions/presenters/base.py +0 -0
  177. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/tui/permissions/presenters/bash.py +0 -0
  178. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/tui/permissions/presenters/fallback.py +0 -0
  179. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/tui/permissions/presenters/file.py +0 -0
  180. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/tui/permissions/requests/__init__.py +0 -0
  181. {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
  182. {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
  183. {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
  184. {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
  185. {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
  186. {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
  187. {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
  188. {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
  189. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/tui/permissions/requests/auto_mode_deny.py +0 -0
  190. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/tui/permissions/requests/base.py +0 -0
  191. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/tui/permissions/requests/boundary/__init__.py +0 -0
  192. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/tui/permissions/requests/boundary/extract.py +0 -0
  193. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/tui/permissions/requests/boundary/request.py +0 -0
  194. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/tui/permissions/requests/fallback/__init__.py +0 -0
  195. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/tui/permissions/requests/fallback/request.py +0 -0
  196. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/tui/permissions/requests/file/__init__.py +0 -0
  197. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/tui/permissions/requests/file/_base.py +0 -0
  198. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/tui/permissions/requests/file/diff.py +0 -0
  199. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/tui/permissions/requests/file/edit/__init__.py +0 -0
  200. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/tui/permissions/requests/file/edit/request.py +0 -0
  201. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/tui/permissions/requests/file/filesystem/__init__.py +0 -0
  202. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/tui/permissions/requests/file/filesystem/request.py +0 -0
  203. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/tui/permissions/requests/file/paths.py +0 -0
  204. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/tui/permissions/requests/file/write/__init__.py +0 -0
  205. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/tui/permissions/requests/file/write/request.py +0 -0
  206. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/tui/permissions/requests/plan_mode/__init__.py +0 -0
  207. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/tui/permissions/requests/plan_mode/request.py +0 -0
  208. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/tui/permissions/requests/shell/__init__.py +0 -0
  209. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/tui/permissions/requests/shell/bash/__init__.py +0 -0
  210. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/tui/permissions/requests/shell/bash/request.py +0 -0
  211. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/tui/permissions/requests/shell/boundary_request.py +0 -0
  212. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/tui/permissions/requests/shell/extract.py +0 -0
  213. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/tui/permissions/requests/shell/helpers.py +0 -0
  214. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/tui/permissions/requests/skill/__init__.py +0 -0
  215. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/tui/permissions/requests/skill/request.py +0 -0
  216. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/tui/permissions/requests/webfetch/__init__.py +0 -0
  217. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/tui/permissions/requests/webfetch/request.py +0 -0
  218. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/tui/permissions/router.py +0 -0
  219. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/tui/safe_screen.py +0 -0
  220. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/tui/session_memory_paths.py +0 -0
  221. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/tui/widgets/health_view.py +0 -0
  222. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/tui/workspace_trust.py +0 -0
  223. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/utils/__init__.py +0 -0
  224. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/utils/diff.py +0 -0
  225. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/utils/external_editor.py +0 -0
  226. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/utils/read_edit_context.py +0 -0
  227. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/welcome.py +0 -0
  228. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/widgets/__init__.py +0 -0
  229. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/widgets/ask_user_gather_port.py +0 -0
  230. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/widgets/compact_progress.py +0 -0
  231. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/widgets/completion_overlay.py +0 -0
  232. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/widgets/diff_preview.py +0 -0
  233. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/widgets/diff_render.py +0 -0
  234. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/widgets/footer.py +0 -0
  235. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/widgets/input_area.py +0 -0
  236. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/widgets/message_events.py +0 -0
  237. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/widgets/message_list.py +0 -0
  238. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/widgets/messages/__init__.py +0 -0
  239. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/widgets/messages/assistant_message.py +0 -0
  240. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/widgets/messages/auto_mode_chip.py +0 -0
  241. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/widgets/messages/collapsed_explore.py +0 -0
  242. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/widgets/messages/collapsed_explore_verbose.py +0 -0
  243. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/widgets/messages/context_limit_message.py +0 -0
  244. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/widgets/messages/error_message.py +0 -0
  245. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/widgets/messages/grouped_tool_use.py +0 -0
  246. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/widgets/messages/hook_message.py +0 -0
  247. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/widgets/messages/interrupted_by_user.py +0 -0
  248. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/widgets/messages/model_retry_message.py +0 -0
  249. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/widgets/messages/rendering.py +0 -0
  250. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/widgets/messages/stop_hook_summary.py +0 -0
  251. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/widgets/messages/streaming_assistant_message.py +0 -0
  252. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/widgets/messages/system_summary.py +0 -0
  253. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/widgets/messages/thinking_message.py +0 -0
  254. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/widgets/messages/tool_result.py +0 -0
  255. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/widgets/messages/user_plan_message.py +0 -0
  256. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/widgets/overlay_divider.py +0 -0
  257. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/widgets/pending_permission.py +0 -0
  258. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/widgets/permission_diff_frame.py +0 -0
  259. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/widgets/permission_inline.py +0 -0
  260. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/widgets/permission_keybindings.py +0 -0
  261. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/widgets/presentation/__init__.py +0 -0
  262. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/widgets/presentation/expand_hint.py +0 -0
  263. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/widgets/presentation/full_output.py +0 -0
  264. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/widgets/presentation/message_layout.py +0 -0
  265. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/widgets/presentation/shell_output.py +0 -0
  266. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/widgets/presentation/view_mode.py +0 -0
  267. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/widgets/projection/__init__.py +0 -0
  268. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/widgets/projection/accumulators/__init__.py +0 -0
  269. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/widgets/projection/accumulators/explore_collapse.py +0 -0
  270. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/widgets/projection/accumulators/grouped_tool_use.py +0 -0
  271. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/widgets/projection/accumulators/subagent_nest.py +0 -0
  272. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/widgets/projection/accumulators/subagent_progress_bucket.py +0 -0
  273. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/widgets/projection/accumulators/subagent_transcript_lane.py +0 -0
  274. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/widgets/projection/accumulators/system_summary.py +0 -0
  275. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/widgets/projection/accumulators/thinking_aware_explore.py +0 -0
  276. {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
  277. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/widgets/projection/bash_explore.py +0 -0
  278. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/widgets/projection/classify.py +0 -0
  279. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/widgets/projection/explore_memory.py +0 -0
  280. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/widgets/projection/explore_summary.py +0 -0
  281. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/widgets/projection/git_operation_tracking.py +0 -0
  282. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/widgets/projection/hook_spinner.py +0 -0
  283. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/widgets/projection/projector.py +0 -0
  284. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/widgets/projection/render_model.py +0 -0
  285. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/widgets/projection/shell_progress_suffix.py +0 -0
  286. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/widgets/projection/thinking_round.py +0 -0
  287. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/widgets/renderable_mount.py +0 -0
  288. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/widgets/spinner.py +0 -0
  289. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/widgets/status_bar.py +0 -0
  290. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/widgets/task_panel.py +0 -0
  291. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/widgets/theme_picker.py +0 -0
  292. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/widgets/tool_result/__init__.py +0 -0
  293. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/widgets/tool_result/base.py +0 -0
  294. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/widgets/tool_result/blocked_view.py +0 -0
  295. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/widgets/tool_result/denial_tracking_notice.py +0 -0
  296. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/widgets/tool_result/error_view.py +0 -0
  297. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/widgets/tool_result/success_view.py +0 -0
  298. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/widgets/tools/__init__.py +0 -0
  299. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/widgets/tools/agent/__init__.py +0 -0
  300. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/widgets/tools/agent/progress_renderer.py +0 -0
  301. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/widgets/tools/agent/subagent_grouper.py +0 -0
  302. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/widgets/tools/agent/subagent_thinking.py +0 -0
  303. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/widgets/tools/agent/subagent_transcript_lane.py +0 -0
  304. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/widgets/tools/agent/widget.py +0 -0
  305. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/widgets/tools/ask_user_question/__init__.py +0 -0
  306. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/widgets/tools/ask_user_question/widget.py +0 -0
  307. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/widgets/tools/base.py +0 -0
  308. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/widgets/tools/bash/__init__.py +0 -0
  309. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/widgets/tools/bash/widget.py +0 -0
  310. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/widgets/tools/edit/__init__.py +0 -0
  311. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/widgets/tools/edit/widget.py +0 -0
  312. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/widgets/tools/file_edit_messages.py +0 -0
  313. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/widgets/tools/file_edit_rejection.py +0 -0
  314. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/widgets/tools/glob/__init__.py +0 -0
  315. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/widgets/tools/glob/widget.py +0 -0
  316. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/widgets/tools/grep/__init__.py +0 -0
  317. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/widgets/tools/grep/widget.py +0 -0
  318. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/widgets/tools/helpers.py +0 -0
  319. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/widgets/tools/read/__init__.py +0 -0
  320. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/widgets/tools/read/widget.py +0 -0
  321. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/widgets/tools/skill/__init__.py +0 -0
  322. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/widgets/tools/skill/widget.py +0 -0
  323. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/widgets/tools/webfetch/__init__.py +0 -0
  324. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/widgets/tools/webfetch/widget.py +0 -0
  325. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/widgets/tools/websearch/__init__.py +0 -0
  326. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/widgets/tools/websearch/widget.py +0 -0
  327. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/widgets/tools/write/__init__.py +0 -0
  328. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/widgets/tools/write/widget.py +0 -0
  329. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/widgets/ui/__init__.py +0 -0
  330. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/widgets/ui/progress.py +0 -0
  331. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/widgets/view_state.py +0 -0
  332. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/widgets/virtualization/__init__.py +0 -0
  333. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/widgets/virtualization/canonical_store.py +0 -0
  334. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/widgets/virtualization/debounce_scheduler.py +0 -0
  335. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/widgets/virtualization/height_cache.py +0 -0
  336. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/widgets/virtualization/mount_calculator.py +0 -0
  337. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/widgets/virtualization/scroll_quantizer.py +0 -0
  338. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli/widgets/virtualization/slide_throttler.py +0 -0
  339. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli.egg-info/dependency_links.txt +0 -0
  340. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli.egg-info/entry_points.txt +0 -0
  341. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli.egg-info/not-zip-safe +0 -0
  342. {langchain-agentx-cli-0.8.3 → langchain-agentx-cli-0.8.4}/langchain_agentx_cli.egg-info/top_level.txt +0 -0
  343. {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
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 |
@@ -1,3 +1,3 @@
1
1
  """langchain_agentx_cli:依托 langchain_agentx_python SDK 的终端 CLI/TUI(CC Ink 迁移)。"""
2
2
 
3
- __version__ = "0.8.3"
3
+ __version__ = "0.8.4"
@@ -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,
@@ -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
- return base.with_project_memory_layout(layout)
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(
@@ -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 ()
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: langchain-agentx-cli
3
- Version: 0.8.3
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 |
@@ -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
@@ -1,4 +1,4 @@
1
- langchain-agentx-python>=2.2.7
1
+ langchain-agentx-python>=2.3.0
2
2
  click>=8.1
3
3
  markdown-it-py>=2.0
4
4
  textual>=0.79.0
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "langchain-agentx-cli"
7
- version = "0.8.3"
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.2.7",
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",