langchain-agentx-cli 0.3.5__tar.gz → 0.3.7__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 (214) hide show
  1. {langchain-agentx-cli-0.3.5 → langchain-agentx-cli-0.3.7}/PKG-INFO +1 -1
  2. {langchain-agentx-cli-0.3.5 → langchain-agentx-cli-0.3.7}/langchain_agentx_cli/__init__.py +1 -1
  3. {langchain-agentx-cli-0.3.5 → langchain-agentx-cli-0.3.7}/langchain_agentx_cli/bootstrap.py +2 -2
  4. {langchain-agentx-cli-0.3.5 → langchain-agentx-cli-0.3.7}/langchain_agentx_cli/bridge/deny_override.py +5 -0
  5. {langchain-agentx-cli-0.3.5 → langchain-agentx-cli-0.3.7}/langchain_agentx_cli/bridge/session_bridge.py +39 -1
  6. {langchain-agentx-cli-0.3.5 → langchain-agentx-cli-0.3.7}/langchain_agentx_cli/cli.py +37 -0
  7. {langchain-agentx-cli-0.3.5 → langchain-agentx-cli-0.3.7}/langchain_agentx_cli/commands/builtin/__init__.py +2 -0
  8. langchain-agentx-cli-0.3.7/langchain_agentx_cli/commands/builtin/doctor.py +74 -0
  9. {langchain-agentx-cli-0.3.5 → langchain-agentx-cli-0.3.7}/langchain_agentx_cli/config.py +2 -0
  10. langchain-agentx-cli-0.3.7/langchain_agentx_cli/health_report.py +389 -0
  11. langchain-agentx-cli-0.3.7/langchain_agentx_cli/observation/audit_subscriber.py +175 -0
  12. langchain-agentx-cli-0.3.7/langchain_agentx_cli/observation/config.py +103 -0
  13. langchain-agentx-cli-0.3.7/langchain_agentx_cli/observation/failure_counts.py +38 -0
  14. langchain-agentx-cli-0.3.7/langchain_agentx_cli/observation/failure_observation.py +64 -0
  15. langchain-agentx-cli-0.3.7/langchain_agentx_cli/observation/log_rotator.py +107 -0
  16. {langchain-agentx-cli-0.3.5 → langchain-agentx-cli-0.3.7}/langchain_agentx_cli/observation/observer.py +41 -3
  17. langchain-agentx-cli-0.3.7/langchain_agentx_cli/observation/session_context.py +55 -0
  18. {langchain-agentx-cli-0.3.5 → langchain-agentx-cli-0.3.7}/langchain_agentx_cli/prompts/__init__.py +6 -0
  19. {langchain-agentx-cli-0.3.5 → langchain-agentx-cli-0.3.7}/langchain_agentx_cli/prompts/assembler.py +6 -1
  20. {langchain-agentx-cli-0.3.5 → langchain-agentx-cli-0.3.7}/langchain_agentx_cli/prompts/sections.py +56 -0
  21. {langchain-agentx-cli-0.3.5 → langchain-agentx-cli-0.3.7}/langchain_agentx_cli/session_factory.py +36 -0
  22. {langchain-agentx-cli-0.3.5 → langchain-agentx-cli-0.3.7}/langchain_agentx_cli/session_options.py +2 -0
  23. langchain-agentx-cli-0.3.7/langchain_agentx_cli/tui/bootstrap.py +49 -0
  24. langchain-agentx-cli-0.3.7/langchain_agentx_cli/tui/widgets/health_view.py +95 -0
  25. {langchain-agentx-cli-0.3.5 → langchain-agentx-cli-0.3.7}/langchain_agentx_cli/welcome.py +8 -1
  26. {langchain-agentx-cli-0.3.5 → langchain-agentx-cli-0.3.7}/langchain_agentx_cli/widgets/input_area.py +19 -1
  27. {langchain-agentx-cli-0.3.5 → langchain-agentx-cli-0.3.7}/langchain_agentx_cli/widgets/message_events.py +4 -0
  28. {langchain-agentx-cli-0.3.5 → langchain-agentx-cli-0.3.7}/langchain_agentx_cli/widgets/message_list.py +4 -2
  29. langchain-agentx-cli-0.3.7/langchain_agentx_cli/widgets/status_bar.py +46 -0
  30. {langchain-agentx-cli-0.3.5 → langchain-agentx-cli-0.3.7}/langchain_agentx_cli/widgets/task_panel.py +2 -4
  31. langchain-agentx-cli-0.3.7/langchain_agentx_cli/widgets/tool_result/__init__.py +34 -0
  32. langchain-agentx-cli-0.3.7/langchain_agentx_cli/widgets/tool_result/base.py +87 -0
  33. langchain-agentx-cli-0.3.7/langchain_agentx_cli/widgets/tool_result/blocked_view.py +84 -0
  34. langchain-agentx-cli-0.3.7/langchain_agentx_cli/widgets/tool_result/error_view.py +137 -0
  35. langchain-agentx-cli-0.3.7/langchain_agentx_cli/widgets/tool_result/success_view.py +50 -0
  36. {langchain-agentx-cli-0.3.5 → langchain-agentx-cli-0.3.7}/langchain_agentx_cli/widgets/tools/base.py +93 -1
  37. {langchain-agentx-cli-0.3.5 → langchain-agentx-cli-0.3.7}/langchain_agentx_cli/widgets/tools/bash/widget.py +4 -2
  38. {langchain-agentx-cli-0.3.5 → langchain-agentx-cli-0.3.7}/langchain_agentx_cli.egg-info/PKG-INFO +1 -1
  39. {langchain-agentx-cli-0.3.5 → langchain-agentx-cli-0.3.7}/langchain_agentx_cli.egg-info/SOURCES.txt +14 -0
  40. {langchain-agentx-cli-0.3.5 → langchain-agentx-cli-0.3.7}/langchain_agentx_cli.egg-info/requires.txt +1 -1
  41. {langchain-agentx-cli-0.3.5 → langchain-agentx-cli-0.3.7}/pyproject.toml +14 -3
  42. langchain-agentx-cli-0.3.5/langchain_agentx_cli/observation/audit_subscriber.py +0 -91
  43. langchain-agentx-cli-0.3.5/langchain_agentx_cli/observation/config.py +0 -35
  44. {langchain-agentx-cli-0.3.5 → langchain-agentx-cli-0.3.7}/LICENSE +0 -0
  45. {langchain-agentx-cli-0.3.5 → langchain-agentx-cli-0.3.7}/README.md +0 -0
  46. {langchain-agentx-cli-0.3.5 → langchain-agentx-cli-0.3.7}/langchain_agentx_cli/__main__.py +0 -0
  47. {langchain-agentx-cli-0.3.5 → langchain-agentx-cli-0.3.7}/langchain_agentx_cli/app.py +0 -0
  48. {langchain-agentx-cli-0.3.5 → langchain-agentx-cli-0.3.7}/langchain_agentx_cli/auto_mode_config.py +0 -0
  49. {langchain-agentx-cli-0.3.5 → langchain-agentx-cli-0.3.7}/langchain_agentx_cli/bridge/__init__.py +0 -0
  50. {langchain-agentx-cli-0.3.5 → langchain-agentx-cli-0.3.7}/langchain_agentx_cli/bridge/auto_mode_config_apply.py +0 -0
  51. {langchain-agentx-cli-0.3.5 → langchain-agentx-cli-0.3.7}/langchain_agentx_cli/bridge/auto_mode_messages.py +0 -0
  52. {langchain-agentx-cli-0.3.5 → langchain-agentx-cli-0.3.7}/langchain_agentx_cli/bridge/auto_mode_sink.py +0 -0
  53. {langchain-agentx-cli-0.3.5 → langchain-agentx-cli-0.3.7}/langchain_agentx_cli/bridge/auto_mode_status.py +0 -0
  54. {langchain-agentx-cli-0.3.5 → langchain-agentx-cli-0.3.7}/langchain_agentx_cli/bridge/boundary_inspector.py +0 -0
  55. {langchain-agentx-cli-0.3.5 → langchain-agentx-cli-0.3.7}/langchain_agentx_cli/bridge/cli_l3_user_ui_queue.py +0 -0
  56. {langchain-agentx-cli-0.3.5 → langchain-agentx-cli-0.3.7}/langchain_agentx_cli/bridge/hook_constants.py +0 -0
  57. {langchain-agentx-cli-0.3.5 → langchain-agentx-cli-0.3.7}/langchain_agentx_cli/bridge/hook_payload.py +0 -0
  58. {langchain-agentx-cli-0.3.5 → langchain-agentx-cli-0.3.7}/langchain_agentx_cli/bridge/permission_mode_apply.py +0 -0
  59. {langchain-agentx-cli-0.3.5 → langchain-agentx-cli-0.3.7}/langchain_agentx_cli/bridge/permission_response_builder.py +0 -0
  60. {langchain-agentx-cli-0.3.5 → langchain-agentx-cli-0.3.7}/langchain_agentx_cli/bridge/permission_user_ui.py +0 -0
  61. {langchain-agentx-cli-0.3.5 → langchain-agentx-cli-0.3.7}/langchain_agentx_cli/commands/__init__.py +0 -0
  62. {langchain-agentx-cli-0.3.5 → langchain-agentx-cli-0.3.7}/langchain_agentx_cli/commands/builtin/auto_mode.py +0 -0
  63. {langchain-agentx-cli-0.3.5 → langchain-agentx-cli-0.3.7}/langchain_agentx_cli/commands/builtin/clear.py +0 -0
  64. {langchain-agentx-cli-0.3.5 → langchain-agentx-cli-0.3.7}/langchain_agentx_cli/commands/builtin/compact.py +0 -0
  65. {langchain-agentx-cli-0.3.5 → langchain-agentx-cli-0.3.7}/langchain_agentx_cli/commands/builtin/grant.py +0 -0
  66. {langchain-agentx-cli-0.3.5 → langchain-agentx-cli-0.3.7}/langchain_agentx_cli/commands/builtin/grants.py +0 -0
  67. {langchain-agentx-cli-0.3.5 → langchain-agentx-cli-0.3.7}/langchain_agentx_cli/commands/builtin/help.py +0 -0
  68. {langchain-agentx-cli-0.3.5 → langchain-agentx-cli-0.3.7}/langchain_agentx_cli/commands/builtin/model.py +0 -0
  69. {langchain-agentx-cli-0.3.5 → langchain-agentx-cli-0.3.7}/langchain_agentx_cli/commands/builtin/permissions.py +0 -0
  70. {langchain-agentx-cli-0.3.5 → langchain-agentx-cli-0.3.7}/langchain_agentx_cli/commands/builtin/quit.py +0 -0
  71. {langchain-agentx-cli-0.3.5 → langchain-agentx-cli-0.3.7}/langchain_agentx_cli/commands/builtin/revoke.py +0 -0
  72. {langchain-agentx-cli-0.3.5 → langchain-agentx-cli-0.3.7}/langchain_agentx_cli/commands/builtin/roots.py +0 -0
  73. {langchain-agentx-cli-0.3.5 → langchain-agentx-cli-0.3.7}/langchain_agentx_cli/commands/builtin/theme.py +0 -0
  74. {langchain-agentx-cli-0.3.5 → langchain-agentx-cli-0.3.7}/langchain_agentx_cli/commands/parser.py +0 -0
  75. {langchain-agentx-cli-0.3.5 → langchain-agentx-cli-0.3.7}/langchain_agentx_cli/commands/providers/__init__.py +0 -0
  76. {langchain-agentx-cli-0.3.5 → langchain-agentx-cli-0.3.7}/langchain_agentx_cli/commands/providers/sdk_commands.py +0 -0
  77. {langchain-agentx-cli-0.3.5 → langchain-agentx-cli-0.3.7}/langchain_agentx_cli/commands/registry.py +0 -0
  78. {langchain-agentx-cli-0.3.5 → langchain-agentx-cli-0.3.7}/langchain_agentx_cli/completion/__init__.py +0 -0
  79. {langchain-agentx-cli-0.3.5 → langchain-agentx-cli-0.3.7}/langchain_agentx_cli/completion/base.py +0 -0
  80. {langchain-agentx-cli-0.3.5 → langchain-agentx-cli-0.3.7}/langchain_agentx_cli/completion/command_source.py +0 -0
  81. {langchain-agentx-cli-0.3.5 → langchain-agentx-cli-0.3.7}/langchain_agentx_cli/completion/history_source.py +0 -0
  82. {langchain-agentx-cli-0.3.5 → langchain-agentx-cli-0.3.7}/langchain_agentx_cli/history/__init__.py +0 -0
  83. {langchain-agentx-cli-0.3.5 → langchain-agentx-cli-0.3.7}/langchain_agentx_cli/history/store.py +0 -0
  84. {langchain-agentx-cli-0.3.5 → langchain-agentx-cli-0.3.7}/langchain_agentx_cli/keybindings/__init__.py +0 -0
  85. {langchain-agentx-cli-0.3.5 → langchain-agentx-cli-0.3.7}/langchain_agentx_cli/keybindings/bindings.py +0 -0
  86. {langchain-agentx-cli-0.3.5 → langchain-agentx-cli-0.3.7}/langchain_agentx_cli/launch_config_validator.py +0 -0
  87. {langchain-agentx-cli-0.3.5 → langchain-agentx-cli-0.3.7}/langchain_agentx_cli/llm_config.py +0 -0
  88. {langchain-agentx-cli-0.3.5 → langchain-agentx-cli-0.3.7}/langchain_agentx_cli/observation/__init__.py +0 -0
  89. {langchain-agentx-cli-0.3.5 → langchain-agentx-cli-0.3.7}/langchain_agentx_cli/permissions/__init__.py +0 -0
  90. {langchain-agentx-cli-0.3.5 → langchain-agentx-cli-0.3.7}/langchain_agentx_cli/permissions/factory.py +0 -0
  91. {langchain-agentx-cli-0.3.5 → langchain-agentx-cli-0.3.7}/langchain_agentx_cli/permissions/mode.py +0 -0
  92. {langchain-agentx-cli-0.3.5 → langchain-agentx-cli-0.3.7}/langchain_agentx_cli/permissions/policy.py +0 -0
  93. {langchain-agentx-cli-0.3.5 → langchain-agentx-cli-0.3.7}/langchain_agentx_cli/permissions/session_mode.py +0 -0
  94. {langchain-agentx-cli-0.3.5 → langchain-agentx-cli-0.3.7}/langchain_agentx_cli/prompts/system_prompt.py +0 -0
  95. {langchain-agentx-cli-0.3.5 → langchain-agentx-cli-0.3.7}/langchain_agentx_cli/screens/__init__.py +0 -0
  96. {langchain-agentx-cli-0.3.5 → langchain-agentx-cli-0.3.7}/langchain_agentx_cli/screens/repl.py +0 -0
  97. {langchain-agentx-cli-0.3.5 → langchain-agentx-cli-0.3.7}/langchain_agentx_cli/session_headless.py +0 -0
  98. {langchain-agentx-cli-0.3.5 → langchain-agentx-cli-0.3.7}/langchain_agentx_cli/state/__init__.py +0 -0
  99. {langchain-agentx-cli-0.3.5 → langchain-agentx-cli-0.3.7}/langchain_agentx_cli/state/task_store.py +0 -0
  100. {langchain-agentx-cli-0.3.5 → langchain-agentx-cli-0.3.7}/langchain_agentx_cli/theme/__init__.py +0 -0
  101. {langchain-agentx-cli-0.3.5 → langchain-agentx-cli-0.3.7}/langchain_agentx_cli/theme/colors.py +0 -0
  102. {langchain-agentx-cli-0.3.5 → langchain-agentx-cli-0.3.7}/langchain_agentx_cli/theme/detection.py +0 -0
  103. {langchain-agentx-cli-0.3.5 → langchain-agentx-cli-0.3.7}/langchain_agentx_cli/theme/manager.py +0 -0
  104. {langchain-agentx-cli-0.3.5 → langchain-agentx-cli-0.3.7}/langchain_agentx_cli/theme/settings.py +0 -0
  105. {langchain-agentx-cli-0.3.5 → langchain-agentx-cli-0.3.7}/langchain_agentx_cli/theme/system_theme.py +0 -0
  106. {langchain-agentx-cli-0.3.5 → langchain-agentx-cli-0.3.7}/langchain_agentx_cli/theme/themes.py +0 -0
  107. {langchain-agentx-cli-0.3.5 → langchain-agentx-cli-0.3.7}/langchain_agentx_cli/theme/watcher.py +0 -0
  108. {langchain-agentx-cli-0.3.5 → langchain-agentx-cli-0.3.7}/langchain_agentx_cli/tools/__init__.py +0 -0
  109. {langchain-agentx-cli-0.3.5 → langchain-agentx-cli-0.3.7}/langchain_agentx_cli/tools/registry.py +0 -0
  110. {langchain-agentx-cli-0.3.5 → langchain-agentx-cli-0.3.7}/langchain_agentx_cli/tui/__init__.py +0 -0
  111. {langchain-agentx-cli-0.3.5 → langchain-agentx-cli-0.3.7}/langchain_agentx_cli/tui/clipboard.py +0 -0
  112. {langchain-agentx-cli-0.3.5 → langchain-agentx-cli-0.3.7}/langchain_agentx_cli/tui/memory_paths.py +0 -0
  113. {langchain-agentx-cli-0.3.5 → langchain-agentx-cli-0.3.7}/langchain_agentx_cli/tui/message_selection.py +0 -0
  114. {langchain-agentx-cli-0.3.5 → langchain-agentx-cli-0.3.7}/langchain_agentx_cli/tui/permissions/__init__.py +0 -0
  115. {langchain-agentx-cli-0.3.5 → langchain-agentx-cli-0.3.7}/langchain_agentx_cli/tui/permissions/cache.py +0 -0
  116. {langchain-agentx-cli-0.3.5 → langchain-agentx-cli-0.3.7}/langchain_agentx_cli/tui/permissions/component_manager.py +0 -0
  117. {langchain-agentx-cli-0.3.5 → langchain-agentx-cli-0.3.7}/langchain_agentx_cli/tui/permissions/config.py +0 -0
  118. {langchain-agentx-cli-0.3.5 → langchain-agentx-cli-0.3.7}/langchain_agentx_cli/tui/permissions/consumer.py +0 -0
  119. {langchain-agentx-cli-0.3.5 → langchain-agentx-cli-0.3.7}/langchain_agentx_cli/tui/permissions/dialog.py +0 -0
  120. {langchain-agentx-cli-0.3.5 → langchain-agentx-cli-0.3.7}/langchain_agentx_cli/tui/permissions/models.py +0 -0
  121. {langchain-agentx-cli-0.3.5 → langchain-agentx-cli-0.3.7}/langchain_agentx_cli/tui/permissions/persistent_rules.py +0 -0
  122. {langchain-agentx-cli-0.3.5 → langchain-agentx-cli-0.3.7}/langchain_agentx_cli/tui/permissions/presenters/__init__.py +0 -0
  123. {langchain-agentx-cli-0.3.5 → langchain-agentx-cli-0.3.7}/langchain_agentx_cli/tui/permissions/presenters/base.py +0 -0
  124. {langchain-agentx-cli-0.3.5 → langchain-agentx-cli-0.3.7}/langchain_agentx_cli/tui/permissions/presenters/bash.py +0 -0
  125. {langchain-agentx-cli-0.3.5 → langchain-agentx-cli-0.3.7}/langchain_agentx_cli/tui/permissions/presenters/fallback.py +0 -0
  126. {langchain-agentx-cli-0.3.5 → langchain-agentx-cli-0.3.7}/langchain_agentx_cli/tui/permissions/presenters/file.py +0 -0
  127. {langchain-agentx-cli-0.3.5 → langchain-agentx-cli-0.3.7}/langchain_agentx_cli/tui/permissions/queue.py +0 -0
  128. {langchain-agentx-cli-0.3.5 → langchain-agentx-cli-0.3.7}/langchain_agentx_cli/tui/permissions/requests/__init__.py +0 -0
  129. {langchain-agentx-cli-0.3.5 → langchain-agentx-cli-0.3.7}/langchain_agentx_cli/tui/permissions/requests/auto_mode_deny.py +0 -0
  130. {langchain-agentx-cli-0.3.5 → langchain-agentx-cli-0.3.7}/langchain_agentx_cli/tui/permissions/requests/base.py +0 -0
  131. {langchain-agentx-cli-0.3.5 → langchain-agentx-cli-0.3.7}/langchain_agentx_cli/tui/permissions/requests/boundary/__init__.py +0 -0
  132. {langchain-agentx-cli-0.3.5 → langchain-agentx-cli-0.3.7}/langchain_agentx_cli/tui/permissions/requests/boundary/extract.py +0 -0
  133. {langchain-agentx-cli-0.3.5 → langchain-agentx-cli-0.3.7}/langchain_agentx_cli/tui/permissions/requests/boundary/request.py +0 -0
  134. {langchain-agentx-cli-0.3.5 → langchain-agentx-cli-0.3.7}/langchain_agentx_cli/tui/permissions/requests/fallback/__init__.py +0 -0
  135. {langchain-agentx-cli-0.3.5 → langchain-agentx-cli-0.3.7}/langchain_agentx_cli/tui/permissions/requests/fallback/request.py +0 -0
  136. {langchain-agentx-cli-0.3.5 → langchain-agentx-cli-0.3.7}/langchain_agentx_cli/tui/permissions/requests/file/__init__.py +0 -0
  137. {langchain-agentx-cli-0.3.5 → langchain-agentx-cli-0.3.7}/langchain_agentx_cli/tui/permissions/requests/file/_base.py +0 -0
  138. {langchain-agentx-cli-0.3.5 → langchain-agentx-cli-0.3.7}/langchain_agentx_cli/tui/permissions/requests/file/diff.py +0 -0
  139. {langchain-agentx-cli-0.3.5 → langchain-agentx-cli-0.3.7}/langchain_agentx_cli/tui/permissions/requests/file/edit/__init__.py +0 -0
  140. {langchain-agentx-cli-0.3.5 → langchain-agentx-cli-0.3.7}/langchain_agentx_cli/tui/permissions/requests/file/edit/request.py +0 -0
  141. {langchain-agentx-cli-0.3.5 → langchain-agentx-cli-0.3.7}/langchain_agentx_cli/tui/permissions/requests/file/filesystem/__init__.py +0 -0
  142. {langchain-agentx-cli-0.3.5 → langchain-agentx-cli-0.3.7}/langchain_agentx_cli/tui/permissions/requests/file/filesystem/request.py +0 -0
  143. {langchain-agentx-cli-0.3.5 → langchain-agentx-cli-0.3.7}/langchain_agentx_cli/tui/permissions/requests/file/paths.py +0 -0
  144. {langchain-agentx-cli-0.3.5 → langchain-agentx-cli-0.3.7}/langchain_agentx_cli/tui/permissions/requests/file/write/__init__.py +0 -0
  145. {langchain-agentx-cli-0.3.5 → langchain-agentx-cli-0.3.7}/langchain_agentx_cli/tui/permissions/requests/file/write/request.py +0 -0
  146. {langchain-agentx-cli-0.3.5 → langchain-agentx-cli-0.3.7}/langchain_agentx_cli/tui/permissions/requests/plan_mode/__init__.py +0 -0
  147. {langchain-agentx-cli-0.3.5 → langchain-agentx-cli-0.3.7}/langchain_agentx_cli/tui/permissions/requests/plan_mode/request.py +0 -0
  148. {langchain-agentx-cli-0.3.5 → langchain-agentx-cli-0.3.7}/langchain_agentx_cli/tui/permissions/requests/shell/__init__.py +0 -0
  149. {langchain-agentx-cli-0.3.5 → langchain-agentx-cli-0.3.7}/langchain_agentx_cli/tui/permissions/requests/shell/bash/__init__.py +0 -0
  150. {langchain-agentx-cli-0.3.5 → langchain-agentx-cli-0.3.7}/langchain_agentx_cli/tui/permissions/requests/shell/bash/request.py +0 -0
  151. {langchain-agentx-cli-0.3.5 → langchain-agentx-cli-0.3.7}/langchain_agentx_cli/tui/permissions/requests/shell/extract.py +0 -0
  152. {langchain-agentx-cli-0.3.5 → langchain-agentx-cli-0.3.7}/langchain_agentx_cli/tui/permissions/requests/shell/helpers.py +0 -0
  153. {langchain-agentx-cli-0.3.5 → langchain-agentx-cli-0.3.7}/langchain_agentx_cli/tui/permissions/requests/skill/__init__.py +0 -0
  154. {langchain-agentx-cli-0.3.5 → langchain-agentx-cli-0.3.7}/langchain_agentx_cli/tui/permissions/requests/skill/request.py +0 -0
  155. {langchain-agentx-cli-0.3.5 → langchain-agentx-cli-0.3.7}/langchain_agentx_cli/tui/permissions/requests/webfetch/__init__.py +0 -0
  156. {langchain-agentx-cli-0.3.5 → langchain-agentx-cli-0.3.7}/langchain_agentx_cli/tui/permissions/requests/webfetch/request.py +0 -0
  157. {langchain-agentx-cli-0.3.5 → langchain-agentx-cli-0.3.7}/langchain_agentx_cli/tui/permissions/router.py +0 -0
  158. {langchain-agentx-cli-0.3.5 → langchain-agentx-cli-0.3.7}/langchain_agentx_cli/tui/safe_screen.py +0 -0
  159. {langchain-agentx-cli-0.3.5 → langchain-agentx-cli-0.3.7}/langchain_agentx_cli/tui/workspace_trust.py +0 -0
  160. {langchain-agentx-cli-0.3.5 → langchain-agentx-cli-0.3.7}/langchain_agentx_cli/widgets/__init__.py +0 -0
  161. {langchain-agentx-cli-0.3.5 → langchain-agentx-cli-0.3.7}/langchain_agentx_cli/widgets/compact_progress.py +0 -0
  162. {langchain-agentx-cli-0.3.5 → langchain-agentx-cli-0.3.7}/langchain_agentx_cli/widgets/completion_overlay.py +0 -0
  163. {langchain-agentx-cli-0.3.5 → langchain-agentx-cli-0.3.7}/langchain_agentx_cli/widgets/footer.py +0 -0
  164. {langchain-agentx-cli-0.3.5 → langchain-agentx-cli-0.3.7}/langchain_agentx_cli/widgets/messages/__init__.py +0 -0
  165. {langchain-agentx-cli-0.3.5 → langchain-agentx-cli-0.3.7}/langchain_agentx_cli/widgets/messages/assistant_message.py +0 -0
  166. {langchain-agentx-cli-0.3.5 → langchain-agentx-cli-0.3.7}/langchain_agentx_cli/widgets/messages/auto_mode_chip.py +0 -0
  167. {langchain-agentx-cli-0.3.5 → langchain-agentx-cli-0.3.7}/langchain_agentx_cli/widgets/messages/error_message.py +0 -0
  168. {langchain-agentx-cli-0.3.5 → langchain-agentx-cli-0.3.7}/langchain_agentx_cli/widgets/messages/hook_message.py +0 -0
  169. {langchain-agentx-cli-0.3.5 → langchain-agentx-cli-0.3.7}/langchain_agentx_cli/widgets/messages/rendering.py +0 -0
  170. {langchain-agentx-cli-0.3.5 → langchain-agentx-cli-0.3.7}/langchain_agentx_cli/widgets/messages/stop_hook_summary.py +0 -0
  171. {langchain-agentx-cli-0.3.5 → langchain-agentx-cli-0.3.7}/langchain_agentx_cli/widgets/messages/thinking_message.py +0 -0
  172. {langchain-agentx-cli-0.3.5 → langchain-agentx-cli-0.3.7}/langchain_agentx_cli/widgets/messages/tool_result.py +0 -0
  173. {langchain-agentx-cli-0.3.5 → langchain-agentx-cli-0.3.7}/langchain_agentx_cli/widgets/pending_permission.py +0 -0
  174. {langchain-agentx-cli-0.3.5 → langchain-agentx-cli-0.3.7}/langchain_agentx_cli/widgets/permission_inline.py +0 -0
  175. {langchain-agentx-cli-0.3.5 → langchain-agentx-cli-0.3.7}/langchain_agentx_cli/widgets/permission_keybindings.py +0 -0
  176. {langchain-agentx-cli-0.3.5 → langchain-agentx-cli-0.3.7}/langchain_agentx_cli/widgets/presentation/__init__.py +0 -0
  177. {langchain-agentx-cli-0.3.5 → langchain-agentx-cli-0.3.7}/langchain_agentx_cli/widgets/presentation/expand_hint.py +0 -0
  178. {langchain-agentx-cli-0.3.5 → langchain-agentx-cli-0.3.7}/langchain_agentx_cli/widgets/presentation/full_output.py +0 -0
  179. {langchain-agentx-cli-0.3.5 → langchain-agentx-cli-0.3.7}/langchain_agentx_cli/widgets/presentation/message_layout.py +0 -0
  180. {langchain-agentx-cli-0.3.5 → langchain-agentx-cli-0.3.7}/langchain_agentx_cli/widgets/presentation/shell_output.py +0 -0
  181. {langchain-agentx-cli-0.3.5 → langchain-agentx-cli-0.3.7}/langchain_agentx_cli/widgets/presentation/view_mode.py +0 -0
  182. {langchain-agentx-cli-0.3.5 → langchain-agentx-cli-0.3.7}/langchain_agentx_cli/widgets/spinner.py +0 -0
  183. {langchain-agentx-cli-0.3.5 → langchain-agentx-cli-0.3.7}/langchain_agentx_cli/widgets/tools/__init__.py +0 -0
  184. {langchain-agentx-cli-0.3.5 → langchain-agentx-cli-0.3.7}/langchain_agentx_cli/widgets/tools/agent/__init__.py +0 -0
  185. {langchain-agentx-cli-0.3.5 → langchain-agentx-cli-0.3.7}/langchain_agentx_cli/widgets/tools/agent/widget.py +0 -0
  186. {langchain-agentx-cli-0.3.5 → langchain-agentx-cli-0.3.7}/langchain_agentx_cli/widgets/tools/ask_user_question/__init__.py +0 -0
  187. {langchain-agentx-cli-0.3.5 → langchain-agentx-cli-0.3.7}/langchain_agentx_cli/widgets/tools/ask_user_question/widget.py +0 -0
  188. {langchain-agentx-cli-0.3.5 → langchain-agentx-cli-0.3.7}/langchain_agentx_cli/widgets/tools/bash/__init__.py +0 -0
  189. {langchain-agentx-cli-0.3.5 → langchain-agentx-cli-0.3.7}/langchain_agentx_cli/widgets/tools/batch_edit/__init__.py +0 -0
  190. {langchain-agentx-cli-0.3.5 → langchain-agentx-cli-0.3.7}/langchain_agentx_cli/widgets/tools/batch_edit/widget.py +0 -0
  191. {langchain-agentx-cli-0.3.5 → langchain-agentx-cli-0.3.7}/langchain_agentx_cli/widgets/tools/edit/__init__.py +0 -0
  192. {langchain-agentx-cli-0.3.5 → langchain-agentx-cli-0.3.7}/langchain_agentx_cli/widgets/tools/edit/widget.py +0 -0
  193. {langchain-agentx-cli-0.3.5 → langchain-agentx-cli-0.3.7}/langchain_agentx_cli/widgets/tools/glob/__init__.py +0 -0
  194. {langchain-agentx-cli-0.3.5 → langchain-agentx-cli-0.3.7}/langchain_agentx_cli/widgets/tools/glob/widget.py +0 -0
  195. {langchain-agentx-cli-0.3.5 → langchain-agentx-cli-0.3.7}/langchain_agentx_cli/widgets/tools/grep/__init__.py +0 -0
  196. {langchain-agentx-cli-0.3.5 → langchain-agentx-cli-0.3.7}/langchain_agentx_cli/widgets/tools/grep/widget.py +0 -0
  197. {langchain-agentx-cli-0.3.5 → langchain-agentx-cli-0.3.7}/langchain_agentx_cli/widgets/tools/helpers.py +0 -0
  198. {langchain-agentx-cli-0.3.5 → langchain-agentx-cli-0.3.7}/langchain_agentx_cli/widgets/tools/read/__init__.py +0 -0
  199. {langchain-agentx-cli-0.3.5 → langchain-agentx-cli-0.3.7}/langchain_agentx_cli/widgets/tools/read/widget.py +0 -0
  200. {langchain-agentx-cli-0.3.5 → langchain-agentx-cli-0.3.7}/langchain_agentx_cli/widgets/tools/skill/__init__.py +0 -0
  201. {langchain-agentx-cli-0.3.5 → langchain-agentx-cli-0.3.7}/langchain_agentx_cli/widgets/tools/skill/widget.py +0 -0
  202. {langchain-agentx-cli-0.3.5 → langchain-agentx-cli-0.3.7}/langchain_agentx_cli/widgets/tools/user_message/__init__.py +0 -0
  203. {langchain-agentx-cli-0.3.5 → langchain-agentx-cli-0.3.7}/langchain_agentx_cli/widgets/tools/user_message/widget.py +0 -0
  204. {langchain-agentx-cli-0.3.5 → langchain-agentx-cli-0.3.7}/langchain_agentx_cli/widgets/tools/webfetch/__init__.py +0 -0
  205. {langchain-agentx-cli-0.3.5 → langchain-agentx-cli-0.3.7}/langchain_agentx_cli/widgets/tools/webfetch/widget.py +0 -0
  206. {langchain-agentx-cli-0.3.5 → langchain-agentx-cli-0.3.7}/langchain_agentx_cli/widgets/tools/websearch/__init__.py +0 -0
  207. {langchain-agentx-cli-0.3.5 → langchain-agentx-cli-0.3.7}/langchain_agentx_cli/widgets/tools/websearch/widget.py +0 -0
  208. {langchain-agentx-cli-0.3.5 → langchain-agentx-cli-0.3.7}/langchain_agentx_cli/widgets/tools/write/__init__.py +0 -0
  209. {langchain-agentx-cli-0.3.5 → langchain-agentx-cli-0.3.7}/langchain_agentx_cli/widgets/tools/write/widget.py +0 -0
  210. {langchain-agentx-cli-0.3.5 → langchain-agentx-cli-0.3.7}/langchain_agentx_cli.egg-info/dependency_links.txt +0 -0
  211. {langchain-agentx-cli-0.3.5 → langchain-agentx-cli-0.3.7}/langchain_agentx_cli.egg-info/entry_points.txt +0 -0
  212. {langchain-agentx-cli-0.3.5 → langchain-agentx-cli-0.3.7}/langchain_agentx_cli.egg-info/not-zip-safe +0 -0
  213. {langchain-agentx-cli-0.3.5 → langchain-agentx-cli-0.3.7}/langchain_agentx_cli.egg-info/top_level.txt +0 -0
  214. {langchain-agentx-cli-0.3.5 → langchain-agentx-cli-0.3.7}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: langchain-agentx-cli
3
- Version: 0.3.5
3
+ Version: 0.3.7
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
@@ -1,3 +1,3 @@
1
1
  """langchain_agentx_cli:依托 langchain_agentx_python SDK 的终端 CLI/TUI(CC Ink 迁移)。"""
2
2
 
3
- __version__ = "0.3.5"
3
+ __version__ = "0.3.7"
@@ -8,7 +8,7 @@ bootstrap.py — CLI 启动前环境检查。
8
8
  CliEntry.run() 在创建 ReplApp 之前调用。
9
9
 
10
10
  当前裁剪范围:
11
- 不校验 API Key;AgentSession 创建失败由 session_factory 抛出 CliEnvironmentError
11
+ 不校验 API Key;启动期 quick health tui/bootstrap.py
12
12
  """
13
13
 
14
14
  from __future__ import annotations
@@ -30,7 +30,7 @@ class EnvironmentChecker:
30
30
  except ImportError as exc:
31
31
  raise CliEnvironmentError(
32
32
  "无法导入 langchain_agentx。请安装 SDK:\n"
33
- ' pip install "langchain-agentx-python>=0.6.1,<0.7.0"\n'
33
+ ' pip install "langchain-agentx-python>=0.7.0,<0.8.0"\n'
34
34
  "或 editable:pip install -e <langchain_agentx_python 路径>"
35
35
  ) from exc
36
36
 
@@ -131,6 +131,8 @@ def _post_replay_tool_ui(
131
131
  meta.setdefault("tool_call_id", tool_call_id)
132
132
  display = artifact.get("display") if isinstance(artifact.get("display"), dict) else None
133
133
  output = adapter.envelope_to_tool_output(envelope)
134
+ err_info = artifact.get("error")
135
+ envelope_error = err_info if isinstance(err_info, dict) else None
134
136
  if envelope.status == "error":
135
137
  bridge._post_ui(
136
138
  ToolUseCompleted(
@@ -144,6 +146,7 @@ def _post_replay_tool_ui(
144
146
  display=display or {},
145
147
  truncated=bool(envelope.truncated),
146
148
  overflow_file=envelope.overflow_file,
149
+ envelope_error=envelope_error,
147
150
  )
148
151
  )
149
152
  return
@@ -158,6 +161,8 @@ def _post_replay_tool_ui(
158
161
  display=display or {},
159
162
  truncated=bool(envelope.truncated),
160
163
  overflow_file=envelope.overflow_file,
164
+ envelope_error=envelope_error,
165
+ error=output if str(envelope.status or "ok") == "error" else None,
161
166
  )
162
167
  )
163
168
 
@@ -216,10 +216,32 @@ class SessionBridge:
216
216
  exit_on_error=False,
217
217
  )
218
218
 
219
+ async def _stream_events_with_failure_observation(self, user_input: str):
220
+ """转发 raw on_custom_event 给 L8/L7 sink,再 yield 给事件适配器。"""
221
+ handlers = getattr(self._session, "_cli_failure_handlers", None)
222
+ async for raw in self._session.stream_loop_events(user_input):
223
+ if handlers is not None and raw.get("event") == "on_custom_event":
224
+ name = str(raw.get("name") or "")
225
+ if name.startswith("tool.failure."):
226
+ await handlers.dispatch_raw_event(raw)
227
+ self._refresh_failure_footer()
228
+ yield raw
229
+
230
+ def _refresh_failure_footer(self) -> None:
231
+ try:
232
+ screen = self.app.screen
233
+ from langchain_agentx_cli.screens.repl import ReplScreen
234
+ from langchain_agentx_cli.widgets.input_area import InputAreaWidget
235
+
236
+ if isinstance(screen, ReplScreen):
237
+ screen.query_one(InputAreaWidget).refresh_auto_status_footer()
238
+ except Exception:
239
+ pass
240
+
219
241
  async def _stream_turn(self, user_input: str) -> None:
220
242
  self._adapter._reset_state()
221
243
  self._seg.reset()
222
- raw_events = self._session.stream_loop_events(user_input)
244
+ raw_events = self._stream_events_with_failure_observation(user_input)
223
245
  try:
224
246
  async for event in self._adapter.adapt(raw_events):
225
247
  self._dispatch_event(event)
@@ -291,6 +313,7 @@ class SessionBridge:
291
313
  type(data.get("payload")).__name__,
292
314
  bool(data.get("display")),
293
315
  )
316
+ err_info = data.get("error")
294
317
  self._post_ui(
295
318
  ToolUseCompleted(
296
319
  tool_name=tool_name,
@@ -302,11 +325,18 @@ class SessionBridge:
302
325
  display=data.get("display") if isinstance(data.get("display"), dict) else None,
303
326
  truncated=bool(data.get("truncated", False)),
304
327
  overflow_file=data.get("overflow_file"),
328
+ envelope_error=err_info if isinstance(err_info, dict) else None,
329
+ error=(
330
+ fallback_output
331
+ if str(data.get("status", "ok")) == "error"
332
+ else None
333
+ ),
305
334
  )
306
335
  )
307
336
  case LangchainAgentEventType.TOOL_ERROR:
308
337
  tool_name = str(data.get("tool_name", ""))
309
338
  error_text = str(data.get("error", ""))
339
+ err_info = data.get("error")
310
340
  self._post_ui(
311
341
  ToolUseCompleted(
312
342
  tool_name=tool_name,
@@ -317,6 +347,7 @@ class SessionBridge:
317
347
  status=str(data.get("status", "error")),
318
348
  meta=data.get("meta") if isinstance(data.get("meta"), dict) else None,
319
349
  display=data.get("display") if isinstance(data.get("display"), dict) else None,
350
+ envelope_error=err_info if isinstance(err_info, dict) else None,
320
351
  )
321
352
  )
322
353
  case LangchainAgentEventType.TOOL_PROGRESS:
@@ -402,6 +433,7 @@ class SessionBridge:
402
433
  parent_tool_use_id,
403
434
  len(str(data.get("summary", ""))),
404
435
  )
436
+ err_info = data.get("error")
405
437
  self._post_ui(
406
438
  ToolUseCompleted(
407
439
  tool_name=tool_name,
@@ -414,6 +446,12 @@ class SessionBridge:
414
446
  truncated=bool(data.get("truncated", False)),
415
447
  overflow_file=data.get("overflow_file"),
416
448
  parent_tool_use_id=parent_tool_use_id,
449
+ envelope_error=err_info if isinstance(err_info, dict) else None,
450
+ error=(
451
+ fallback_output
452
+ if str(data.get("status", "ok")) == "error"
453
+ else None
454
+ ),
417
455
  )
418
456
  )
419
457
  case LangchainAgentEventType.HOOK_PROGRESS:
@@ -22,6 +22,8 @@ warnings.filterwarnings("ignore", message=".*allowed_objects.*")
22
22
 
23
23
  from langchain_agentx_cli.app import ReplApp
24
24
  from langchain_agentx_cli.bootstrap import CliEnvironmentError, EnvironmentChecker
25
+ from langchain_agentx_cli.health_report import StartupCheckMode
26
+ from langchain_agentx_cli.tui.bootstrap import apply_startup_health_check
25
27
  from langchain_agentx_cli.config import AppPreferencesStore, ReplLaunchConfig
26
28
  from langchain_agentx_cli.permissions.mode import normalize_permission_mode
27
29
  from langchain_agentx_cli.llm_config import (
@@ -64,6 +66,7 @@ class CliEntry:
64
66
  added_read_roots: tuple[Path, ...] = (),
65
67
  extra_read_roots: tuple[Path, ...] = (),
66
68
  extra_write_roots: tuple[Path, ...] = (),
69
+ startup_check: StartupCheckMode = "quiet",
67
70
  ) -> int:
68
71
  # Mode 到 agent_home 的映射(优先级高于 --agent-home)
69
72
  if mode:
@@ -84,6 +87,16 @@ class CliEntry:
84
87
  EnvironmentChecker.emit_error(str(exc))
85
88
  return 2
86
89
 
90
+ if startup_check != "off":
91
+ try:
92
+ launch_config = apply_startup_health_check(
93
+ launch_config,
94
+ startup_check,
95
+ )
96
+ except CliEnvironmentError as exc:
97
+ EnvironmentChecker.emit_error(str(exc))
98
+ return 2
99
+
87
100
  if show_config:
88
101
  cfg = resolve_llm_config(
89
102
  cli_provider=provider,
@@ -330,6 +343,18 @@ _CONFIG_PATH = user_config_path()
330
343
  type=click.Path(exists=True, file_okay=False, dir_okay=True, path_type=Path),
331
344
  help="额外可写根(须在 workspace 或某个 read root 内,否则启动失败)",
332
345
  )
346
+ @click.option(
347
+ "--check-env",
348
+ is_flag=True,
349
+ default=False,
350
+ help="启动前全量环境检查;失败时退出码 2 且不进入 REPL",
351
+ )
352
+ @click.option(
353
+ "--no-check-env",
354
+ is_flag=True,
355
+ default=False,
356
+ help="跳过启动期 quick 环境检查",
357
+ )
333
358
  def main(
334
359
  workspace_root: Path | None,
335
360
  mode: str | None,
@@ -344,8 +369,19 @@ def main(
344
369
  added_read_roots: tuple[Path, ...],
345
370
  extra_read_roots: tuple[Path, ...],
346
371
  extra_write_roots: tuple[Path, ...],
372
+ check_env: bool,
373
+ no_check_env: bool,
347
374
  ) -> None:
348
375
  """langchain-agentx 终端 REPL(MVP)。"""
376
+ if check_env and no_check_env:
377
+ raise click.UsageError("--check-env 与 --no-check-env 不能同时使用")
378
+ if no_check_env:
379
+ startup_check: StartupCheckMode = "off"
380
+ elif check_env:
381
+ startup_check = "strict"
382
+ else:
383
+ startup_check = "quiet"
384
+
349
385
  code = CliEntry().run(
350
386
  workspace_root=workspace_root,
351
387
  mode=mode,
@@ -360,5 +396,6 @@ def main(
360
396
  added_read_roots=added_read_roots,
361
397
  extra_read_roots=extra_read_roots,
362
398
  extra_write_roots=extra_write_roots,
399
+ startup_check=startup_check,
363
400
  )
364
401
  raise SystemExit(code)
@@ -10,6 +10,7 @@ from langchain_agentx_cli.commands.builtin.revoke import make_revoke_command
10
10
  from langchain_agentx_cli.commands.builtin.roots import make_roots_command
11
11
  from langchain_agentx_cli.commands.builtin.clear import make_clear_command
12
12
  from langchain_agentx_cli.commands.builtin.compact import make_compact_command
13
+ from langchain_agentx_cli.commands.builtin.doctor import make_doctor_command
13
14
  from langchain_agentx_cli.commands.builtin.help import make_help_command
14
15
  from langchain_agentx_cli.commands.builtin.model import make_model_command
15
16
  from langchain_agentx_cli.commands.builtin.quit import make_quit_command
@@ -20,6 +21,7 @@ from langchain_agentx_cli.commands.registry import CommandRegistry
20
21
  def register_builtin_commands(registry: CommandRegistry) -> None:
21
22
  for factory in (
22
23
  make_help_command,
24
+ make_doctor_command,
23
25
  make_clear_command,
24
26
  make_quit_command,
25
27
  make_compact_command,
@@ -0,0 +1,74 @@
1
+ """
2
+ commands/builtin/doctor.py — /doctor 环境诊断(L10)。
3
+
4
+ 职责:
5
+ 调用 SDK sdk_health + preflight;合并 CLI 检查;展示 HealthReportView。
6
+
7
+ 链路位置:
8
+ CommandRegistry;可选 --save 落盘 doctor-{ts}.json。
9
+
10
+ 当前裁剪范围:
11
+ 不重复 SDK 检查逻辑;无 --fix 自动修复。
12
+ """
13
+
14
+ from __future__ import annotations
15
+
16
+ from pathlib import Path
17
+
18
+ from langchain_agentx_cli.commands.registry import Command, CommandContext
19
+ from langchain_agentx_cli.health_report import build_doctor_report, save_doctor_report
20
+ from langchain_agentx_cli.llm_config import resolve_llm_config
21
+ from langchain_agentx_cli.tui.widgets.health_view import HealthReportView
22
+
23
+
24
+ def _parse_doctor_args(args: str) -> dict[str, bool]:
25
+ tokens = {t.strip().lower() for t in args.split() if t.strip()}
26
+ return {
27
+ "save": "--save" in tokens,
28
+ "preflight_only": "--preflight-only" in tokens,
29
+ }
30
+
31
+
32
+ async def handle_doctor(ctx: CommandContext) -> str | None:
33
+ flags = _parse_doctor_args(ctx.args)
34
+ launch = ctx.app.launch_config
35
+ llm = resolve_llm_config(
36
+ cli_provider=launch.provider,
37
+ cli_model=launch.model,
38
+ )
39
+ try:
40
+ report = await build_doctor_report(
41
+ workspace_root=launch.workspace_root,
42
+ agent_home=launch.agent_home,
43
+ provider=launch.provider,
44
+ model=llm.model,
45
+ base_url=llm.base_url,
46
+ preflight_only=flags["preflight_only"],
47
+ )
48
+ except ImportError as exc:
49
+ msg = (
50
+ "health API 不可用,请升级 SDK:\n"
51
+ ' pip install -U "langchain-agentx-python>=0.7.0,<0.8.0"\n'
52
+ f" ({exc})"
53
+ )
54
+ ctx.output(msg)
55
+ return msg
56
+
57
+ ctx.app.push_screen(HealthReportView(report))
58
+
59
+ if flags["save"]:
60
+ path = save_doctor_report(report)
61
+ note = f"Saved doctor report to {path}"
62
+ ctx.output(note)
63
+ return note
64
+ return None
65
+
66
+
67
+ def make_doctor_command() -> Command:
68
+ return Command(
69
+ name="doctor",
70
+ description="环境诊断(SDK + 网络 preflight + CLI 检查)",
71
+ aliases=["health"],
72
+ arg_names=["--save", "--preflight-only"],
73
+ handler=handle_doctor,
74
+ )
@@ -167,3 +167,5 @@ class ReplLaunchConfig:
167
167
  # 跨库边界(不含 workspace_root;透传 SDK 时再与 workspace_root 合并)
168
168
  read_roots: tuple[Path, ...] = field(default_factory=tuple)
169
169
  write_roots: tuple[Path, ...] = field(default_factory=tuple)
170
+ startup_check: str = field(default="quiet")
171
+ startup_health_report: object | None = field(default=None)