claude-mpm 4.13.2__py3-none-any.whl → 4.18.2__py3-none-any.whl
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.
- claude_mpm/VERSION +1 -1
- claude_mpm/agents/BASE_ENGINEER.md +286 -0
- claude_mpm/agents/BASE_PM.md +48 -17
- claude_mpm/agents/OUTPUT_STYLE.md +329 -11
- claude_mpm/agents/PM_INSTRUCTIONS.md +227 -8
- claude_mpm/agents/agent_loader.py +17 -5
- claude_mpm/agents/frontmatter_validator.py +284 -253
- claude_mpm/agents/templates/agentic-coder-optimizer.json +9 -2
- claude_mpm/agents/templates/api_qa.json +7 -1
- claude_mpm/agents/templates/clerk-ops.json +8 -1
- claude_mpm/agents/templates/code_analyzer.json +4 -1
- claude_mpm/agents/templates/dart_engineer.json +11 -1
- claude_mpm/agents/templates/data_engineer.json +11 -1
- claude_mpm/agents/templates/documentation.json +6 -1
- claude_mpm/agents/templates/engineer.json +18 -1
- claude_mpm/agents/templates/gcp_ops_agent.json +8 -1
- claude_mpm/agents/templates/golang_engineer.json +11 -1
- claude_mpm/agents/templates/java_engineer.json +12 -2
- claude_mpm/agents/templates/local_ops_agent.json +1217 -6
- claude_mpm/agents/templates/nextjs_engineer.json +11 -1
- claude_mpm/agents/templates/ops.json +8 -1
- claude_mpm/agents/templates/php-engineer.json +11 -1
- claude_mpm/agents/templates/project_organizer.json +10 -3
- claude_mpm/agents/templates/prompt-engineer.json +5 -1
- claude_mpm/agents/templates/python_engineer.json +11 -1
- claude_mpm/agents/templates/qa.json +7 -1
- claude_mpm/agents/templates/react_engineer.json +11 -1
- claude_mpm/agents/templates/refactoring_engineer.json +8 -1
- claude_mpm/agents/templates/research.json +4 -1
- claude_mpm/agents/templates/ruby-engineer.json +11 -1
- claude_mpm/agents/templates/rust_engineer.json +11 -1
- claude_mpm/agents/templates/security.json +6 -1
- claude_mpm/agents/templates/svelte-engineer.json +225 -0
- claude_mpm/agents/templates/ticketing.json +6 -1
- claude_mpm/agents/templates/typescript_engineer.json +11 -1
- claude_mpm/agents/templates/vercel_ops_agent.json +8 -1
- claude_mpm/agents/templates/version_control.json +8 -1
- claude_mpm/agents/templates/web_qa.json +7 -1
- claude_mpm/agents/templates/web_ui.json +11 -1
- claude_mpm/cli/__init__.py +34 -706
- claude_mpm/cli/commands/agent_manager.py +25 -12
- claude_mpm/cli/commands/agent_state_manager.py +186 -0
- claude_mpm/cli/commands/agents.py +204 -148
- claude_mpm/cli/commands/aggregate.py +7 -3
- claude_mpm/cli/commands/analyze.py +9 -4
- claude_mpm/cli/commands/analyze_code.py +7 -2
- claude_mpm/cli/commands/auto_configure.py +7 -9
- claude_mpm/cli/commands/config.py +47 -13
- claude_mpm/cli/commands/configure.py +294 -1788
- claude_mpm/cli/commands/configure_agent_display.py +261 -0
- claude_mpm/cli/commands/configure_behavior_manager.py +204 -0
- claude_mpm/cli/commands/configure_hook_manager.py +225 -0
- claude_mpm/cli/commands/configure_models.py +18 -0
- claude_mpm/cli/commands/configure_navigation.py +167 -0
- claude_mpm/cli/commands/configure_paths.py +104 -0
- claude_mpm/cli/commands/configure_persistence.py +254 -0
- claude_mpm/cli/commands/configure_startup_manager.py +646 -0
- claude_mpm/cli/commands/configure_template_editor.py +497 -0
- claude_mpm/cli/commands/configure_validators.py +73 -0
- claude_mpm/cli/commands/local_deploy.py +537 -0
- claude_mpm/cli/commands/memory.py +54 -20
- claude_mpm/cli/commands/mpm_init.py +39 -25
- claude_mpm/cli/commands/mpm_init_handler.py +8 -3
- claude_mpm/cli/executor.py +202 -0
- claude_mpm/cli/helpers.py +105 -0
- claude_mpm/cli/interactive/__init__.py +3 -0
- claude_mpm/cli/interactive/skills_wizard.py +491 -0
- claude_mpm/cli/parsers/__init__.py +7 -1
- claude_mpm/cli/parsers/base_parser.py +98 -3
- claude_mpm/cli/parsers/local_deploy_parser.py +227 -0
- claude_mpm/cli/shared/output_formatters.py +28 -19
- claude_mpm/cli/startup.py +481 -0
- claude_mpm/cli/utils.py +52 -1
- claude_mpm/commands/mpm-help.md +3 -0
- claude_mpm/commands/mpm-version.md +113 -0
- claude_mpm/commands/mpm.md +1 -0
- claude_mpm/config/agent_config.py +2 -2
- claude_mpm/config/model_config.py +428 -0
- claude_mpm/core/base_service.py +13 -12
- claude_mpm/core/enums.py +452 -0
- claude_mpm/core/factories.py +1 -1
- claude_mpm/core/instruction_reinforcement_hook.py +2 -1
- claude_mpm/core/interactive_session.py +9 -3
- claude_mpm/core/logging_config.py +6 -2
- claude_mpm/core/oneshot_session.py +8 -4
- claude_mpm/core/optimized_agent_loader.py +3 -3
- claude_mpm/core/output_style_manager.py +12 -192
- claude_mpm/core/service_registry.py +5 -1
- claude_mpm/core/types.py +2 -9
- claude_mpm/core/typing_utils.py +7 -6
- claude_mpm/dashboard/static/js/dashboard.js +0 -14
- claude_mpm/dashboard/templates/index.html +3 -41
- claude_mpm/hooks/claude_hooks/response_tracking.py +35 -1
- claude_mpm/hooks/instruction_reinforcement.py +7 -2
- claude_mpm/models/resume_log.py +340 -0
- claude_mpm/services/agents/auto_config_manager.py +10 -11
- claude_mpm/services/agents/deployment/agent_configuration_manager.py +1 -1
- claude_mpm/services/agents/deployment/agent_record_service.py +1 -1
- claude_mpm/services/agents/deployment/agent_validator.py +17 -1
- claude_mpm/services/agents/deployment/async_agent_deployment.py +1 -1
- claude_mpm/services/agents/deployment/interface_adapter.py +3 -2
- claude_mpm/services/agents/deployment/local_template_deployment.py +1 -1
- claude_mpm/services/agents/deployment/pipeline/steps/agent_processing_step.py +7 -6
- claude_mpm/services/agents/deployment/pipeline/steps/base_step.py +7 -16
- claude_mpm/services/agents/deployment/pipeline/steps/configuration_step.py +4 -3
- claude_mpm/services/agents/deployment/pipeline/steps/target_directory_step.py +5 -3
- claude_mpm/services/agents/deployment/pipeline/steps/validation_step.py +6 -5
- claude_mpm/services/agents/deployment/refactored_agent_deployment_service.py +9 -6
- claude_mpm/services/agents/deployment/validation/__init__.py +3 -1
- claude_mpm/services/agents/deployment/validation/validation_result.py +1 -9
- claude_mpm/services/agents/local_template_manager.py +1 -1
- claude_mpm/services/agents/memory/agent_memory_manager.py +5 -2
- claude_mpm/services/agents/registry/modification_tracker.py +5 -2
- claude_mpm/services/command_handler_service.py +11 -5
- claude_mpm/services/core/interfaces/__init__.py +74 -2
- claude_mpm/services/core/interfaces/health.py +172 -0
- claude_mpm/services/core/interfaces/model.py +281 -0
- claude_mpm/services/core/interfaces/process.py +372 -0
- claude_mpm/services/core/interfaces/restart.py +307 -0
- claude_mpm/services/core/interfaces/stability.py +260 -0
- claude_mpm/services/core/models/__init__.py +33 -0
- claude_mpm/services/core/models/agent_config.py +12 -28
- claude_mpm/services/core/models/health.py +162 -0
- claude_mpm/services/core/models/process.py +235 -0
- claude_mpm/services/core/models/restart.py +302 -0
- claude_mpm/services/core/models/stability.py +264 -0
- claude_mpm/services/core/path_resolver.py +23 -7
- claude_mpm/services/diagnostics/__init__.py +2 -2
- claude_mpm/services/diagnostics/checks/agent_check.py +25 -24
- claude_mpm/services/diagnostics/checks/claude_code_check.py +24 -23
- claude_mpm/services/diagnostics/checks/common_issues_check.py +25 -24
- claude_mpm/services/diagnostics/checks/configuration_check.py +24 -23
- claude_mpm/services/diagnostics/checks/filesystem_check.py +18 -17
- claude_mpm/services/diagnostics/checks/installation_check.py +30 -29
- claude_mpm/services/diagnostics/checks/instructions_check.py +20 -19
- claude_mpm/services/diagnostics/checks/mcp_check.py +50 -36
- claude_mpm/services/diagnostics/checks/mcp_services_check.py +36 -31
- claude_mpm/services/diagnostics/checks/monitor_check.py +23 -22
- claude_mpm/services/diagnostics/checks/startup_log_check.py +9 -8
- claude_mpm/services/diagnostics/diagnostic_runner.py +6 -5
- claude_mpm/services/diagnostics/doctor_reporter.py +28 -25
- claude_mpm/services/diagnostics/models.py +19 -24
- claude_mpm/services/infrastructure/monitoring/__init__.py +1 -1
- claude_mpm/services/infrastructure/monitoring/aggregator.py +12 -12
- claude_mpm/services/infrastructure/monitoring/base.py +5 -13
- claude_mpm/services/infrastructure/monitoring/network.py +7 -6
- claude_mpm/services/infrastructure/monitoring/process.py +13 -12
- claude_mpm/services/infrastructure/monitoring/resources.py +7 -6
- claude_mpm/services/infrastructure/monitoring/service.py +16 -15
- claude_mpm/services/infrastructure/resume_log_generator.py +439 -0
- claude_mpm/services/local_ops/__init__.py +163 -0
- claude_mpm/services/local_ops/crash_detector.py +257 -0
- claude_mpm/services/local_ops/health_checks/__init__.py +28 -0
- claude_mpm/services/local_ops/health_checks/http_check.py +224 -0
- claude_mpm/services/local_ops/health_checks/process_check.py +236 -0
- claude_mpm/services/local_ops/health_checks/resource_check.py +255 -0
- claude_mpm/services/local_ops/health_manager.py +430 -0
- claude_mpm/services/local_ops/log_monitor.py +396 -0
- claude_mpm/services/local_ops/memory_leak_detector.py +294 -0
- claude_mpm/services/local_ops/process_manager.py +595 -0
- claude_mpm/services/local_ops/resource_monitor.py +331 -0
- claude_mpm/services/local_ops/restart_manager.py +401 -0
- claude_mpm/services/local_ops/restart_policy.py +387 -0
- claude_mpm/services/local_ops/state_manager.py +372 -0
- claude_mpm/services/local_ops/unified_manager.py +600 -0
- claude_mpm/services/mcp_config_manager.py +9 -4
- claude_mpm/services/mcp_gateway/core/__init__.py +1 -2
- claude_mpm/services/mcp_gateway/core/base.py +18 -31
- claude_mpm/services/mcp_gateway/tools/external_mcp_services.py +71 -24
- claude_mpm/services/mcp_gateway/tools/health_check_tool.py +30 -28
- claude_mpm/services/memory_hook_service.py +4 -1
- claude_mpm/services/model/__init__.py +147 -0
- claude_mpm/services/model/base_provider.py +365 -0
- claude_mpm/services/model/claude_provider.py +412 -0
- claude_mpm/services/model/model_router.py +453 -0
- claude_mpm/services/model/ollama_provider.py +415 -0
- claude_mpm/services/monitor/daemon_manager.py +3 -2
- claude_mpm/services/monitor/handlers/dashboard.py +2 -1
- claude_mpm/services/monitor/handlers/hooks.py +2 -1
- claude_mpm/services/monitor/management/lifecycle.py +3 -2
- claude_mpm/services/monitor/server.py +2 -1
- claude_mpm/services/session_management_service.py +3 -2
- claude_mpm/services/session_manager.py +205 -1
- claude_mpm/services/shared/async_service_base.py +16 -27
- claude_mpm/services/shared/lifecycle_service_base.py +1 -14
- claude_mpm/services/socketio/handlers/__init__.py +5 -2
- claude_mpm/services/socketio/handlers/hook.py +13 -2
- claude_mpm/services/socketio/handlers/registry.py +4 -2
- claude_mpm/services/socketio/server/main.py +10 -8
- claude_mpm/services/subprocess_launcher_service.py +14 -5
- claude_mpm/services/unified/analyzer_strategies/code_analyzer.py +8 -7
- claude_mpm/services/unified/analyzer_strategies/dependency_analyzer.py +6 -5
- claude_mpm/services/unified/analyzer_strategies/performance_analyzer.py +8 -7
- claude_mpm/services/unified/analyzer_strategies/security_analyzer.py +7 -6
- claude_mpm/services/unified/analyzer_strategies/structure_analyzer.py +5 -4
- claude_mpm/services/unified/config_strategies/validation_strategy.py +13 -9
- claude_mpm/services/unified/deployment_strategies/cloud_strategies.py +10 -3
- claude_mpm/services/unified/deployment_strategies/local.py +6 -5
- claude_mpm/services/unified/deployment_strategies/utils.py +6 -5
- claude_mpm/services/unified/deployment_strategies/vercel.py +7 -6
- claude_mpm/services/unified/interfaces.py +3 -1
- claude_mpm/services/unified/unified_analyzer.py +14 -10
- claude_mpm/services/unified/unified_config.py +2 -1
- claude_mpm/services/unified/unified_deployment.py +9 -4
- claude_mpm/services/version_service.py +104 -1
- claude_mpm/skills/__init__.py +21 -0
- claude_mpm/skills/bundled/__init__.py +6 -0
- claude_mpm/skills/bundled/api-documentation.md +393 -0
- claude_mpm/skills/bundled/async-testing.md +571 -0
- claude_mpm/skills/bundled/code-review.md +143 -0
- claude_mpm/skills/bundled/database-migration.md +199 -0
- claude_mpm/skills/bundled/docker-containerization.md +194 -0
- claude_mpm/skills/bundled/express-local-dev.md +1429 -0
- claude_mpm/skills/bundled/fastapi-local-dev.md +1199 -0
- claude_mpm/skills/bundled/git-workflow.md +414 -0
- claude_mpm/skills/bundled/imagemagick.md +204 -0
- claude_mpm/skills/bundled/json-data-handling.md +223 -0
- claude_mpm/skills/bundled/nextjs-local-dev.md +807 -0
- claude_mpm/skills/bundled/pdf.md +141 -0
- claude_mpm/skills/bundled/performance-profiling.md +567 -0
- claude_mpm/skills/bundled/refactoring-patterns.md +180 -0
- claude_mpm/skills/bundled/security-scanning.md +327 -0
- claude_mpm/skills/bundled/systematic-debugging.md +473 -0
- claude_mpm/skills/bundled/test-driven-development.md +378 -0
- claude_mpm/skills/bundled/vite-local-dev.md +1061 -0
- claude_mpm/skills/bundled/web-performance-optimization.md +2305 -0
- claude_mpm/skills/bundled/xlsx.md +157 -0
- claude_mpm/skills/registry.py +286 -0
- claude_mpm/skills/skill_manager.py +310 -0
- claude_mpm/tools/code_tree_analyzer.py +177 -141
- claude_mpm/tools/code_tree_events.py +4 -2
- claude_mpm/utils/agent_dependency_loader.py +2 -2
- {claude_mpm-4.13.2.dist-info → claude_mpm-4.18.2.dist-info}/METADATA +117 -8
- {claude_mpm-4.13.2.dist-info → claude_mpm-4.18.2.dist-info}/RECORD +238 -174
- claude_mpm/dashboard/static/css/code-tree.css +0 -1639
- claude_mpm/dashboard/static/js/components/code-tree/tree-breadcrumb.js +0 -353
- claude_mpm/dashboard/static/js/components/code-tree/tree-constants.js +0 -235
- claude_mpm/dashboard/static/js/components/code-tree/tree-search.js +0 -409
- claude_mpm/dashboard/static/js/components/code-tree/tree-utils.js +0 -435
- claude_mpm/dashboard/static/js/components/code-tree.js +0 -5869
- claude_mpm/dashboard/static/js/components/code-viewer.js +0 -1386
- claude_mpm/hooks/claude_hooks/hook_handler_eventbus.py +0 -425
- claude_mpm/hooks/claude_hooks/hook_handler_original.py +0 -1041
- claude_mpm/hooks/claude_hooks/hook_handler_refactored.py +0 -347
- claude_mpm/services/agents/deployment/agent_lifecycle_manager_refactored.py +0 -575
- claude_mpm/services/project/analyzer_refactored.py +0 -450
- {claude_mpm-4.13.2.dist-info → claude_mpm-4.18.2.dist-info}/WHEEL +0 -0
- {claude_mpm-4.13.2.dist-info → claude_mpm-4.18.2.dist-info}/entry_points.txt +0 -0
- {claude_mpm-4.13.2.dist-info → claude_mpm-4.18.2.dist-info}/licenses/LICENSE +0 -0
- {claude_mpm-4.13.2.dist-info → claude_mpm-4.18.2.dist-info}/top_level.txt +0 -0
|
@@ -22,6 +22,7 @@ from rich.syntax import Syntax
|
|
|
22
22
|
from rich.table import Table
|
|
23
23
|
|
|
24
24
|
from ...core.config import Config
|
|
25
|
+
from ...core.enums import OutputFormat
|
|
25
26
|
from ...utils.console import console
|
|
26
27
|
from ..shared import (
|
|
27
28
|
BaseCommand,
|
|
@@ -29,12 +30,45 @@ from ..shared import (
|
|
|
29
30
|
)
|
|
30
31
|
|
|
31
32
|
|
|
33
|
+
def _is_structured_output(args) -> bool:
|
|
34
|
+
"""Check if args specify structured output format (JSON/YAML)."""
|
|
35
|
+
if hasattr(args, "format"):
|
|
36
|
+
fmt = str(args.format).lower()
|
|
37
|
+
return fmt in (OutputFormat.JSON, OutputFormat.YAML)
|
|
38
|
+
return False
|
|
39
|
+
|
|
40
|
+
|
|
32
41
|
class ConfigCommand(BaseCommand):
|
|
33
42
|
"""Configuration management command using shared utilities."""
|
|
34
43
|
|
|
35
44
|
def __init__(self):
|
|
36
45
|
super().__init__("config")
|
|
37
46
|
|
|
47
|
+
def _get_output_format(self, args) -> str:
|
|
48
|
+
"""
|
|
49
|
+
Get output format from args with enum default.
|
|
50
|
+
|
|
51
|
+
Args:
|
|
52
|
+
args: Command arguments
|
|
53
|
+
|
|
54
|
+
Returns:
|
|
55
|
+
Output format string (compatible with both enum and string usage)
|
|
56
|
+
"""
|
|
57
|
+
return getattr(args, "format", OutputFormat.TEXT)
|
|
58
|
+
|
|
59
|
+
def _is_structured_format(self, format_str: str) -> bool:
|
|
60
|
+
"""
|
|
61
|
+
Check if format is structured (JSON/YAML).
|
|
62
|
+
|
|
63
|
+
Args:
|
|
64
|
+
format_str: Format string to check
|
|
65
|
+
|
|
66
|
+
Returns:
|
|
67
|
+
True if format is JSON or YAML
|
|
68
|
+
"""
|
|
69
|
+
fmt = str(format_str).lower()
|
|
70
|
+
return fmt in (OutputFormat.JSON, OutputFormat.YAML)
|
|
71
|
+
|
|
38
72
|
def validate_args(self, args) -> str:
|
|
39
73
|
"""Validate command arguments."""
|
|
40
74
|
if not hasattr(args, "config_command") or not args.config_command:
|
|
@@ -71,7 +105,7 @@ class ConfigCommand(BaseCommand):
|
|
|
71
105
|
f"Create with: mkdir -p {config_file.parent} && touch {config_file}"
|
|
72
106
|
)
|
|
73
107
|
|
|
74
|
-
if
|
|
108
|
+
if self._is_structured_format(self._get_output_format(args)):
|
|
75
109
|
return CommandResult.error_result(
|
|
76
110
|
error_msg,
|
|
77
111
|
data={"suggestion": suggestion, "config_file": str(config_file)},
|
|
@@ -101,8 +135,8 @@ class ConfigCommand(BaseCommand):
|
|
|
101
135
|
}
|
|
102
136
|
|
|
103
137
|
# Handle output format
|
|
104
|
-
output_format =
|
|
105
|
-
if output_format
|
|
138
|
+
output_format = self._get_output_format(args)
|
|
139
|
+
if self._is_structured_format(output_format):
|
|
106
140
|
if is_valid and not warnings:
|
|
107
141
|
return CommandResult.success_result(
|
|
108
142
|
"Configuration is valid", data=result_data
|
|
@@ -160,7 +194,7 @@ class ConfigCommand(BaseCommand):
|
|
|
160
194
|
except Exception as e:
|
|
161
195
|
self.logger.error(f"Configuration validation error: {e}", exc_info=True)
|
|
162
196
|
|
|
163
|
-
if
|
|
197
|
+
if self._is_structured_format(self._get_output_format(args)):
|
|
164
198
|
return CommandResult.error_result(
|
|
165
199
|
f"Failed to validate configuration: {e}",
|
|
166
200
|
data={"config_file": str(config_file), "exception": str(e)},
|
|
@@ -187,7 +221,7 @@ class ConfigCommand(BaseCommand):
|
|
|
187
221
|
error_msg = f"Section '{section}' not found in configuration"
|
|
188
222
|
available_sections = list(config_dict.keys())
|
|
189
223
|
|
|
190
|
-
if
|
|
224
|
+
if self._is_structured_format(self._get_output_format(args)):
|
|
191
225
|
return CommandResult.error_result(
|
|
192
226
|
error_msg, data={"available_sections": available_sections}
|
|
193
227
|
)
|
|
@@ -198,9 +232,9 @@ class ConfigCommand(BaseCommand):
|
|
|
198
232
|
return CommandResult.error_result(error_msg)
|
|
199
233
|
|
|
200
234
|
# Handle output format
|
|
201
|
-
output_format =
|
|
235
|
+
output_format = self._get_output_format(args)
|
|
202
236
|
|
|
203
|
-
if output_format ==
|
|
237
|
+
if str(output_format).lower() == OutputFormat.JSON:
|
|
204
238
|
if hasattr(args, "output") and args.output:
|
|
205
239
|
# Use shared output handling
|
|
206
240
|
return CommandResult.success_result(
|
|
@@ -214,7 +248,7 @@ class ConfigCommand(BaseCommand):
|
|
|
214
248
|
"Configuration displayed", data=config_dict
|
|
215
249
|
)
|
|
216
250
|
|
|
217
|
-
if output_format ==
|
|
251
|
+
if str(output_format).lower() == OutputFormat.YAML:
|
|
218
252
|
if hasattr(args, "output") and args.output:
|
|
219
253
|
# Use shared output handling
|
|
220
254
|
return CommandResult.success_result(
|
|
@@ -239,7 +273,7 @@ class ConfigCommand(BaseCommand):
|
|
|
239
273
|
except Exception as e:
|
|
240
274
|
self.logger.error(f"Configuration view error: {e}", exc_info=True)
|
|
241
275
|
|
|
242
|
-
if
|
|
276
|
+
if self._is_structured_format(self._get_output_format(args)):
|
|
243
277
|
return CommandResult.error_result(
|
|
244
278
|
f"Failed to view configuration: {e}", data={"exception": str(e)}
|
|
245
279
|
)
|
|
@@ -257,9 +291,9 @@ class ConfigCommand(BaseCommand):
|
|
|
257
291
|
status = config.get_configuration_status()
|
|
258
292
|
|
|
259
293
|
# Handle output format
|
|
260
|
-
output_format =
|
|
294
|
+
output_format = self._get_output_format(args)
|
|
261
295
|
|
|
262
|
-
if output_format
|
|
296
|
+
if self._is_structured_format(output_format):
|
|
263
297
|
# Structured output
|
|
264
298
|
result_data = status.copy()
|
|
265
299
|
|
|
@@ -297,7 +331,7 @@ class ConfigCommand(BaseCommand):
|
|
|
297
331
|
except Exception as e:
|
|
298
332
|
self.logger.error(f"Configuration status error: {e}", exc_info=True)
|
|
299
333
|
|
|
300
|
-
if
|
|
334
|
+
if self._is_structured_format(self._get_output_format(args)):
|
|
301
335
|
return CommandResult.error_result(
|
|
302
336
|
f"Failed to get configuration status: {e}",
|
|
303
337
|
data={"exception": str(e)},
|
|
@@ -429,7 +463,7 @@ def manage_config(args) -> int:
|
|
|
429
463
|
result = command.execute(args)
|
|
430
464
|
|
|
431
465
|
# Print result if not already handled
|
|
432
|
-
if
|
|
466
|
+
if _is_structured_output(args):
|
|
433
467
|
command.print_result(result, args)
|
|
434
468
|
|
|
435
469
|
return result.exit_code
|