claude-mpm 4.3.11__py3-none-any.whl → 4.3.13__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/PM_INSTRUCTIONS.md +390 -28
- claude_mpm/agents/templates/data_engineer.json +39 -14
- claude_mpm/agents/templates/research.json +20 -8
- claude_mpm/agents/templates/web_qa.json +25 -10
- claude_mpm/cli/__init__.py +1 -0
- claude_mpm/cli/commands/agent_manager.py +3 -3
- claude_mpm/cli/commands/agents.py +2 -2
- claude_mpm/cli/commands/aggregate.py +1 -1
- claude_mpm/cli/commands/config.py +2 -2
- claude_mpm/cli/commands/configure.py +5 -5
- claude_mpm/cli/commands/configure_tui.py +7 -7
- claude_mpm/cli/commands/dashboard.py +1 -1
- claude_mpm/cli/commands/debug.py +5 -5
- claude_mpm/cli/commands/mcp.py +1 -1
- claude_mpm/cli/commands/mcp_command_router.py +12 -1
- claude_mpm/cli/commands/mcp_config.py +154 -0
- claude_mpm/cli/commands/mcp_external_commands.py +249 -0
- claude_mpm/cli/commands/mcp_install_commands.py +93 -24
- claude_mpm/cli/commands/mcp_setup_external.py +870 -0
- claude_mpm/cli/commands/monitor.py +2 -2
- claude_mpm/cli/commands/mpm_init_handler.py +1 -1
- claude_mpm/cli/commands/run.py +114 -0
- claude_mpm/cli/commands/search.py +292 -0
- claude_mpm/cli/interactive/agent_wizard.py +2 -2
- claude_mpm/cli/parsers/base_parser.py +13 -0
- claude_mpm/cli/parsers/mcp_parser.py +15 -0
- claude_mpm/cli/parsers/run_parser.py +5 -0
- claude_mpm/cli/parsers/search_parser.py +245 -0
- claude_mpm/cli/startup_logging.py +3 -5
- claude_mpm/cli/utils.py +1 -1
- claude_mpm/constants.py +1 -0
- claude_mpm/core/agent_registry.py +12 -8
- claude_mpm/core/agent_session_manager.py +8 -8
- claude_mpm/core/api_validator.py +4 -4
- claude_mpm/core/base_service.py +10 -10
- claude_mpm/core/cache.py +5 -5
- claude_mpm/core/config_constants.py +1 -1
- claude_mpm/core/container.py +1 -1
- claude_mpm/core/error_handler.py +2 -2
- claude_mpm/core/file_utils.py +1 -1
- claude_mpm/core/framework_loader.py +3 -3
- claude_mpm/core/hook_manager.py +8 -6
- claude_mpm/core/instruction_reinforcement_hook.py +2 -2
- claude_mpm/core/interactive_session.py +1 -1
- claude_mpm/core/lazy.py +3 -3
- claude_mpm/core/log_manager.py +16 -12
- claude_mpm/core/logger.py +16 -11
- claude_mpm/core/logging_config.py +4 -2
- claude_mpm/core/oneshot_session.py +1 -1
- claude_mpm/core/optimized_agent_loader.py +6 -6
- claude_mpm/core/output_style_manager.py +1 -1
- claude_mpm/core/pm_hook_interceptor.py +3 -3
- claude_mpm/core/service_registry.py +1 -1
- claude_mpm/core/session_manager.py +11 -9
- claude_mpm/core/socketio_pool.py +13 -13
- claude_mpm/core/types.py +2 -2
- claude_mpm/core/unified_agent_registry.py +9 -2
- claude_mpm/core/unified_paths.py +1 -1
- claude_mpm/dashboard/analysis_runner.py +4 -4
- claude_mpm/dashboard/api/simple_directory.py +1 -1
- claude_mpm/generators/agent_profile_generator.py +4 -2
- claude_mpm/hooks/base_hook.py +2 -2
- claude_mpm/hooks/claude_hooks/connection_pool.py +4 -4
- claude_mpm/hooks/claude_hooks/event_handlers.py +12 -12
- claude_mpm/hooks/claude_hooks/hook_handler.py +4 -4
- claude_mpm/hooks/claude_hooks/hook_handler_eventbus.py +3 -3
- claude_mpm/hooks/claude_hooks/hook_handler_original.py +15 -14
- claude_mpm/hooks/claude_hooks/hook_handler_refactored.py +4 -4
- claude_mpm/hooks/claude_hooks/installer.py +3 -3
- claude_mpm/hooks/claude_hooks/memory_integration.py +3 -3
- claude_mpm/hooks/claude_hooks/response_tracking.py +3 -3
- claude_mpm/hooks/claude_hooks/services/connection_manager.py +5 -5
- claude_mpm/hooks/claude_hooks/services/connection_manager_http.py +3 -3
- claude_mpm/hooks/claude_hooks/services/state_manager.py +8 -7
- claude_mpm/hooks/claude_hooks/services/subagent_processor.py +3 -3
- claude_mpm/hooks/claude_hooks/tool_analysis.py +2 -2
- claude_mpm/hooks/memory_integration_hook.py +1 -1
- claude_mpm/hooks/tool_call_interceptor.py +2 -2
- claude_mpm/models/agent_session.py +5 -5
- claude_mpm/services/__init__.py +1 -1
- claude_mpm/services/agent_capabilities_service.py +1 -1
- claude_mpm/services/agents/agent_builder.py +3 -3
- claude_mpm/services/agents/deployment/agent_deployment.py +29 -13
- claude_mpm/services/agents/deployment/agent_discovery_service.py +22 -6
- claude_mpm/services/agents/deployment/agent_filesystem_manager.py +7 -5
- claude_mpm/services/agents/deployment/agent_lifecycle_manager.py +3 -1
- claude_mpm/services/agents/deployment/agent_metrics_collector.py +1 -1
- claude_mpm/services/agents/deployment/agent_operation_service.py +2 -2
- claude_mpm/services/agents/deployment/agent_state_service.py +2 -2
- claude_mpm/services/agents/deployment/agent_template_builder.py +1 -1
- claude_mpm/services/agents/deployment/agent_versioning.py +1 -1
- claude_mpm/services/agents/deployment/deployment_wrapper.py +2 -3
- claude_mpm/services/agents/deployment/multi_source_deployment_service.py +6 -4
- claude_mpm/services/agents/deployment/pipeline/steps/agent_processing_step.py +1 -1
- claude_mpm/services/agents/loading/agent_profile_loader.py +5 -3
- claude_mpm/services/agents/loading/base_agent_manager.py +2 -2
- claude_mpm/services/agents/local_template_manager.py +6 -6
- claude_mpm/services/agents/management/agent_management_service.py +3 -3
- claude_mpm/services/agents/memory/content_manager.py +3 -3
- claude_mpm/services/agents/memory/memory_format_service.py +2 -2
- claude_mpm/services/agents/memory/template_generator.py +3 -3
- claude_mpm/services/agents/registry/__init__.py +1 -1
- claude_mpm/services/agents/registry/modification_tracker.py +2 -2
- claude_mpm/services/async_session_logger.py +3 -3
- claude_mpm/services/claude_session_logger.py +4 -4
- claude_mpm/services/cli/agent_cleanup_service.py +5 -0
- claude_mpm/services/cli/agent_listing_service.py +1 -1
- claude_mpm/services/cli/agent_validation_service.py +1 -0
- claude_mpm/services/cli/memory_crud_service.py +11 -6
- claude_mpm/services/cli/memory_output_formatter.py +1 -1
- claude_mpm/services/cli/session_manager.py +15 -11
- claude_mpm/services/cli/unified_dashboard_manager.py +1 -1
- claude_mpm/services/core/memory_manager.py +81 -23
- claude_mpm/services/core/path_resolver.py +2 -2
- claude_mpm/services/diagnostics/checks/installation_check.py +1 -1
- claude_mpm/services/event_aggregator.py +4 -2
- claude_mpm/services/event_bus/direct_relay.py +5 -3
- claude_mpm/services/event_bus/event_bus.py +3 -3
- claude_mpm/services/event_bus/relay.py +6 -4
- claude_mpm/services/events/consumers/dead_letter.py +5 -3
- claude_mpm/services/events/core.py +3 -3
- claude_mpm/services/events/producers/hook.py +6 -6
- claude_mpm/services/events/producers/system.py +8 -8
- claude_mpm/services/exceptions.py +5 -5
- claude_mpm/services/framework_claude_md_generator/content_assembler.py +3 -3
- claude_mpm/services/framework_claude_md_generator/section_generators/__init__.py +2 -2
- claude_mpm/services/hook_installer_service.py +1 -1
- claude_mpm/services/infrastructure/context_preservation.py +6 -4
- claude_mpm/services/infrastructure/daemon_manager.py +2 -2
- claude_mpm/services/infrastructure/logging.py +2 -2
- claude_mpm/services/mcp_config_manager.py +439 -0
- claude_mpm/services/mcp_gateway/__init__.py +1 -1
- claude_mpm/services/mcp_gateway/auto_configure.py +3 -3
- claude_mpm/services/mcp_gateway/config/config_loader.py +1 -1
- claude_mpm/services/mcp_gateway/config/configuration.py +18 -1
- claude_mpm/services/mcp_gateway/core/base.py +2 -2
- claude_mpm/services/mcp_gateway/main.py +52 -0
- claude_mpm/services/mcp_gateway/registry/tool_registry.py +10 -8
- claude_mpm/services/mcp_gateway/server/mcp_gateway.py +4 -4
- claude_mpm/services/mcp_gateway/server/stdio_handler.py +1 -1
- claude_mpm/services/mcp_gateway/server/stdio_server.py +4 -3
- claude_mpm/services/mcp_gateway/tools/base_adapter.py +15 -15
- claude_mpm/services/mcp_gateway/tools/document_summarizer.py +7 -5
- claude_mpm/services/mcp_gateway/tools/external_mcp_services.py +443 -0
- claude_mpm/services/mcp_gateway/tools/health_check_tool.py +5 -5
- claude_mpm/services/mcp_gateway/tools/hello_world.py +9 -9
- claude_mpm/services/mcp_gateway/tools/ticket_tools.py +16 -16
- claude_mpm/services/mcp_gateway/tools/unified_ticket_tool.py +17 -17
- claude_mpm/services/memory/builder.py +7 -5
- claude_mpm/services/memory/indexed_memory.py +4 -4
- claude_mpm/services/memory/optimizer.py +6 -6
- claude_mpm/services/memory/router.py +3 -3
- claude_mpm/services/monitor/daemon.py +1 -1
- claude_mpm/services/monitor/daemon_manager.py +6 -6
- claude_mpm/services/monitor/event_emitter.py +2 -2
- claude_mpm/services/monitor/handlers/file.py +1 -1
- claude_mpm/services/monitor/management/lifecycle.py +1 -1
- claude_mpm/services/monitor/server.py +4 -4
- claude_mpm/services/monitor_build_service.py +2 -2
- claude_mpm/services/port_manager.py +2 -2
- claude_mpm/services/response_tracker.py +2 -2
- claude_mpm/services/session_management_service.py +3 -2
- claude_mpm/services/socketio/client_proxy.py +2 -2
- claude_mpm/services/socketio/dashboard_server.py +4 -3
- claude_mpm/services/socketio/event_normalizer.py +12 -8
- claude_mpm/services/socketio/handlers/base.py +2 -2
- claude_mpm/services/socketio/handlers/connection.py +10 -10
- claude_mpm/services/socketio/handlers/connection_handler.py +13 -10
- claude_mpm/services/socketio/handlers/file.py +1 -1
- claude_mpm/services/socketio/handlers/git.py +1 -1
- claude_mpm/services/socketio/handlers/hook.py +16 -15
- claude_mpm/services/socketio/migration_utils.py +1 -1
- claude_mpm/services/socketio/monitor_client.py +5 -5
- claude_mpm/services/socketio/server/broadcaster.py +9 -7
- claude_mpm/services/socketio/server/connection_manager.py +2 -2
- claude_mpm/services/socketio/server/core.py +7 -5
- claude_mpm/services/socketio/server/eventbus_integration.py +18 -11
- claude_mpm/services/socketio/server/main.py +13 -13
- claude_mpm/services/socketio_client_manager.py +4 -4
- claude_mpm/services/system_instructions_service.py +2 -2
- claude_mpm/services/ticket_services/validation_service.py +1 -1
- claude_mpm/services/utility_service.py +5 -2
- claude_mpm/services/version_control/branch_strategy.py +2 -2
- claude_mpm/services/version_control/git_operations.py +22 -20
- claude_mpm/services/version_control/semantic_versioning.py +3 -3
- claude_mpm/services/version_control/version_parser.py +7 -5
- claude_mpm/services/visualization/mermaid_generator.py +1 -1
- claude_mpm/storage/state_storage.py +1 -1
- claude_mpm/tools/code_tree_analyzer.py +19 -18
- claude_mpm/tools/code_tree_builder.py +2 -2
- claude_mpm/tools/code_tree_events.py +10 -8
- claude_mpm/tools/socketio_debug.py +3 -3
- claude_mpm/utils/agent_dependency_loader.py +2 -2
- claude_mpm/utils/dependency_strategies.py +8 -3
- claude_mpm/utils/environment_context.py +2 -2
- claude_mpm/utils/error_handler.py +2 -2
- claude_mpm/utils/file_utils.py +1 -1
- claude_mpm/utils/imports.py +1 -1
- claude_mpm/utils/log_cleanup.py +21 -7
- claude_mpm/validation/agent_validator.py +2 -2
- {claude_mpm-4.3.11.dist-info → claude_mpm-4.3.13.dist-info}/METADATA +4 -1
- {claude_mpm-4.3.11.dist-info → claude_mpm-4.3.13.dist-info}/RECORD +207 -200
- {claude_mpm-4.3.11.dist-info → claude_mpm-4.3.13.dist-info}/WHEEL +0 -0
- {claude_mpm-4.3.11.dist-info → claude_mpm-4.3.13.dist-info}/entry_points.txt +0 -0
- {claude_mpm-4.3.11.dist-info → claude_mpm-4.3.13.dist-info}/licenses/LICENSE +0 -0
- {claude_mpm-4.3.11.dist-info → claude_mpm-4.3.13.dist-info}/top_level.txt +0 -0
|
@@ -7,7 +7,7 @@ This replaces direct Socket.IO emission in the hook handler.
|
|
|
7
7
|
"""
|
|
8
8
|
|
|
9
9
|
import uuid
|
|
10
|
-
from datetime import datetime
|
|
10
|
+
from datetime import datetime, timezone
|
|
11
11
|
from typing import Any, Dict, List, Optional
|
|
12
12
|
|
|
13
13
|
from claude_mpm.core.logging_config import get_logger
|
|
@@ -96,7 +96,7 @@ class HookEventProducer(IEventProducer):
|
|
|
96
96
|
id=str(uuid.uuid4()),
|
|
97
97
|
topic="hook.response",
|
|
98
98
|
type="AssistantResponse",
|
|
99
|
-
timestamp=datetime.now(),
|
|
99
|
+
timestamp=datetime.now(timezone.utc),
|
|
100
100
|
source=self.source_name,
|
|
101
101
|
data=response_data,
|
|
102
102
|
correlation_id=correlation_id,
|
|
@@ -128,7 +128,7 @@ class HookEventProducer(IEventProducer):
|
|
|
128
128
|
id=str(uuid.uuid4()),
|
|
129
129
|
topic="hook.tool",
|
|
130
130
|
type="ToolUse",
|
|
131
|
-
timestamp=datetime.now(),
|
|
131
|
+
timestamp=datetime.now(timezone.utc),
|
|
132
132
|
source=self.source_name,
|
|
133
133
|
data={
|
|
134
134
|
"tool": tool_name,
|
|
@@ -164,7 +164,7 @@ class HookEventProducer(IEventProducer):
|
|
|
164
164
|
id=str(uuid.uuid4()),
|
|
165
165
|
topic="hook.error",
|
|
166
166
|
type="Error",
|
|
167
|
-
timestamp=datetime.now(),
|
|
167
|
+
timestamp=datetime.now(timezone.utc),
|
|
168
168
|
source=self.source_name,
|
|
169
169
|
data={
|
|
170
170
|
"error_type": error_type,
|
|
@@ -200,7 +200,7 @@ class HookEventProducer(IEventProducer):
|
|
|
200
200
|
id=str(uuid.uuid4()),
|
|
201
201
|
topic=f"hook.subagent.{event_type.lower()}",
|
|
202
202
|
type=f"Subagent{event_type}",
|
|
203
|
-
timestamp=datetime.now(),
|
|
203
|
+
timestamp=datetime.now(timezone.utc),
|
|
204
204
|
source=self.source_name,
|
|
205
205
|
data={
|
|
206
206
|
"subagent": subagent_name,
|
|
@@ -255,7 +255,7 @@ class HookEventProducer(IEventProducer):
|
|
|
255
255
|
id=str(uuid.uuid4()),
|
|
256
256
|
topic=topic,
|
|
257
257
|
type=hook_type,
|
|
258
|
-
timestamp=datetime.now(),
|
|
258
|
+
timestamp=datetime.now(timezone.utc),
|
|
259
259
|
source=self.source_name,
|
|
260
260
|
data=hook_data,
|
|
261
261
|
correlation_id=correlation_id,
|
|
@@ -6,7 +6,7 @@ Publishes system-level events to the event bus.
|
|
|
6
6
|
"""
|
|
7
7
|
|
|
8
8
|
import uuid
|
|
9
|
-
from datetime import datetime
|
|
9
|
+
from datetime import datetime, timezone
|
|
10
10
|
from typing import Any, Dict, List, Optional
|
|
11
11
|
|
|
12
12
|
from claude_mpm.core.logging_config import get_logger
|
|
@@ -100,7 +100,7 @@ class SystemEventProducer(IEventProducer):
|
|
|
100
100
|
id=str(uuid.uuid4()),
|
|
101
101
|
topic="system.lifecycle.startup",
|
|
102
102
|
type="ServiceStartup",
|
|
103
|
-
timestamp=datetime.now(),
|
|
103
|
+
timestamp=datetime.now(timezone.utc),
|
|
104
104
|
source=self.source_name,
|
|
105
105
|
data={
|
|
106
106
|
"service": service_name,
|
|
@@ -133,7 +133,7 @@ class SystemEventProducer(IEventProducer):
|
|
|
133
133
|
id=str(uuid.uuid4()),
|
|
134
134
|
topic="system.lifecycle.shutdown",
|
|
135
135
|
type="ServiceShutdown",
|
|
136
|
-
timestamp=datetime.now(),
|
|
136
|
+
timestamp=datetime.now(timezone.utc),
|
|
137
137
|
source=self.source_name,
|
|
138
138
|
data={
|
|
139
139
|
"service": service_name,
|
|
@@ -168,7 +168,7 @@ class SystemEventProducer(IEventProducer):
|
|
|
168
168
|
id=str(uuid.uuid4()),
|
|
169
169
|
topic="system.health",
|
|
170
170
|
type="HealthStatus",
|
|
171
|
-
timestamp=datetime.now(),
|
|
171
|
+
timestamp=datetime.now(timezone.utc),
|
|
172
172
|
source=self.source_name,
|
|
173
173
|
data={
|
|
174
174
|
"service": service_name,
|
|
@@ -206,7 +206,7 @@ class SystemEventProducer(IEventProducer):
|
|
|
206
206
|
id=str(uuid.uuid4()),
|
|
207
207
|
topic="system.config",
|
|
208
208
|
type="ConfigChange",
|
|
209
|
-
timestamp=datetime.now(),
|
|
209
|
+
timestamp=datetime.now(timezone.utc),
|
|
210
210
|
source=self.source_name,
|
|
211
211
|
data={
|
|
212
212
|
"service": service_name,
|
|
@@ -238,7 +238,7 @@ class SystemEventProducer(IEventProducer):
|
|
|
238
238
|
id=str(uuid.uuid4()),
|
|
239
239
|
topic="system.performance",
|
|
240
240
|
type="PerformanceMetrics",
|
|
241
|
-
timestamp=datetime.now(),
|
|
241
|
+
timestamp=datetime.now(timezone.utc),
|
|
242
242
|
source=self.source_name,
|
|
243
243
|
data={
|
|
244
244
|
"service": service_name,
|
|
@@ -274,7 +274,7 @@ class SystemEventProducer(IEventProducer):
|
|
|
274
274
|
id=str(uuid.uuid4()),
|
|
275
275
|
topic="system.error",
|
|
276
276
|
type="SystemError",
|
|
277
|
-
timestamp=datetime.now(),
|
|
277
|
+
timestamp=datetime.now(timezone.utc),
|
|
278
278
|
source=self.source_name,
|
|
279
279
|
data={
|
|
280
280
|
"service": service_name,
|
|
@@ -311,7 +311,7 @@ class SystemEventProducer(IEventProducer):
|
|
|
311
311
|
id=str(uuid.uuid4()),
|
|
312
312
|
topic="system.warning",
|
|
313
313
|
type="SystemWarning",
|
|
314
|
-
timestamp=datetime.now(),
|
|
314
|
+
timestamp=datetime.now(timezone.utc),
|
|
315
315
|
source=self.source_name,
|
|
316
316
|
data={
|
|
317
317
|
"service": service_name,
|
|
@@ -15,7 +15,7 @@ Design Principles:
|
|
|
15
15
|
|
|
16
16
|
import platform
|
|
17
17
|
import time
|
|
18
|
-
from datetime import datetime
|
|
18
|
+
from datetime import datetime, timezone
|
|
19
19
|
from typing import Any, Dict, List, Optional
|
|
20
20
|
|
|
21
21
|
|
|
@@ -43,7 +43,7 @@ class SocketIOServerError(Exception):
|
|
|
43
43
|
self.message = message
|
|
44
44
|
self.error_code = error_code or self.__class__.__name__.lower()
|
|
45
45
|
self.context = context or {}
|
|
46
|
-
self.timestamp = datetime.
|
|
46
|
+
self.timestamp = datetime.now(timezone.utc).isoformat() + "Z"
|
|
47
47
|
|
|
48
48
|
def to_dict(self) -> Dict[str, Any]:
|
|
49
49
|
"""Convert error to dictionary format for structured logging/handling."""
|
|
@@ -125,9 +125,9 @@ class DaemonConflictError(SocketIOServerError):
|
|
|
125
125
|
)
|
|
126
126
|
|
|
127
127
|
if create_time:
|
|
128
|
-
start_time = datetime.fromtimestamp(
|
|
129
|
-
|
|
130
|
-
)
|
|
128
|
+
start_time = datetime.fromtimestamp(
|
|
129
|
+
create_time, tz=timezone.utc
|
|
130
|
+
).strftime("%Y-%m-%d %H:%M:%S")
|
|
131
131
|
uptime = time.time() - create_time
|
|
132
132
|
lines.append(f" • Started: {start_time} (uptime: {uptime:.0f}s)")
|
|
133
133
|
|
|
@@ -7,7 +7,7 @@ Assembles sections and applies template variable substitution.
|
|
|
7
7
|
import hashlib
|
|
8
8
|
import logging
|
|
9
9
|
from collections import OrderedDict
|
|
10
|
-
from datetime import datetime
|
|
10
|
+
from datetime import datetime, timezone
|
|
11
11
|
from typing import Any, Dict, Optional
|
|
12
12
|
|
|
13
13
|
from claude_mpm.services.agents.management import AgentCapabilitiesGenerator
|
|
@@ -35,7 +35,7 @@ class ContentAssembler:
|
|
|
35
35
|
Returns:
|
|
36
36
|
str: 16-character hash of content
|
|
37
37
|
"""
|
|
38
|
-
timestamp = datetime.
|
|
38
|
+
timestamp = datetime.now(timezone.utc).isoformat()
|
|
39
39
|
hash_obj = hashlib.sha256(timestamp.encode())
|
|
40
40
|
return hash_obj.hexdigest()[:16]
|
|
41
41
|
|
|
@@ -176,7 +176,7 @@ class ContentAssembler:
|
|
|
176
176
|
Returns:
|
|
177
177
|
Dict: Metadata for header
|
|
178
178
|
"""
|
|
179
|
-
timestamp = datetime.
|
|
179
|
+
timestamp = datetime.now(timezone.utc).isoformat()
|
|
180
180
|
|
|
181
181
|
return {
|
|
182
182
|
"version": version,
|
|
@@ -5,7 +5,7 @@ This module provides base classes and registry for section generators.
|
|
|
5
5
|
"""
|
|
6
6
|
|
|
7
7
|
from abc import ABC, abstractmethod
|
|
8
|
-
from datetime import datetime
|
|
8
|
+
from datetime import datetime, timezone
|
|
9
9
|
from typing import Any, Dict, Optional
|
|
10
10
|
|
|
11
11
|
|
|
@@ -35,7 +35,7 @@ class BaseSectionGenerator(ABC):
|
|
|
35
35
|
|
|
36
36
|
def get_timestamp(self) -> str:
|
|
37
37
|
"""Get current UTC timestamp."""
|
|
38
|
-
return datetime.
|
|
38
|
+
return datetime.now(timezone.utc).isoformat()
|
|
39
39
|
|
|
40
40
|
|
|
41
41
|
class SectionGeneratorRegistry:
|
|
@@ -24,7 +24,7 @@ class HookInstallerService:
|
|
|
24
24
|
self.claude_dir = Path.home() / ".claude"
|
|
25
25
|
self.settings_file = self.claude_dir / "settings.json"
|
|
26
26
|
|
|
27
|
-
def is_hooks_configured(self) -> bool:
|
|
27
|
+
def is_hooks_configured(self) -> bool: # noqa: PLR0911
|
|
28
28
|
"""Check if hooks are configured in Claude settings.
|
|
29
29
|
|
|
30
30
|
Returns:
|
|
@@ -16,7 +16,7 @@ import gzip
|
|
|
16
16
|
import json
|
|
17
17
|
import shutil
|
|
18
18
|
from dataclasses import dataclass, field
|
|
19
|
-
from datetime import datetime
|
|
19
|
+
from datetime import datetime, timezone
|
|
20
20
|
from typing import Any, Dict, List, Optional
|
|
21
21
|
|
|
22
22
|
import ijson # For streaming JSON parsing
|
|
@@ -203,7 +203,9 @@ class ContextPreservationService(BaseService):
|
|
|
203
203
|
await self._create_backup()
|
|
204
204
|
|
|
205
205
|
# Load and filter conversations
|
|
206
|
-
cutoff_time = datetime.now().timestamp() - (
|
|
206
|
+
cutoff_time = datetime.now(timezone.utc).timestamp() - (
|
|
207
|
+
keep_recent_days * 86400
|
|
208
|
+
)
|
|
207
209
|
|
|
208
210
|
with open(self.claude_json_path) as f:
|
|
209
211
|
data = json.load(f)
|
|
@@ -292,7 +294,7 @@ class ContextPreservationService(BaseService):
|
|
|
292
294
|
try:
|
|
293
295
|
if Path(file_path).exists():
|
|
294
296
|
valid_files.append(file_path)
|
|
295
|
-
except:
|
|
297
|
+
except Exception:
|
|
296
298
|
pass # Invalid path
|
|
297
299
|
|
|
298
300
|
return valid_files
|
|
@@ -516,7 +518,7 @@ class ContextPreservationService(BaseService):
|
|
|
516
518
|
async def _create_backup(self) -> Path:
|
|
517
519
|
"""Create backup of Claude configuration."""
|
|
518
520
|
try:
|
|
519
|
-
timestamp = datetime.now().strftime("%Y%m%d_%H%M%S")
|
|
521
|
+
timestamp = datetime.now(timezone.utc).strftime("%Y%m%d_%H%M%S")
|
|
520
522
|
backup_name = f"claude_backup_{timestamp}.json"
|
|
521
523
|
|
|
522
524
|
# Compress if large
|
|
@@ -107,7 +107,7 @@ class SocketIODaemonManager:
|
|
|
107
107
|
)
|
|
108
108
|
if response.status_code == 200:
|
|
109
109
|
return response.json()
|
|
110
|
-
except:
|
|
110
|
+
except Exception:
|
|
111
111
|
pass
|
|
112
112
|
return None
|
|
113
113
|
|
|
@@ -265,7 +265,7 @@ class SocketIODaemonManager:
|
|
|
265
265
|
result = sock.connect_ex((self.host, self.port))
|
|
266
266
|
sock.close()
|
|
267
267
|
status_info["port_accessible"] = result == 0
|
|
268
|
-
except:
|
|
268
|
+
except Exception:
|
|
269
269
|
status_info["port_accessible"] = False
|
|
270
270
|
|
|
271
271
|
# Check for conflicts
|
|
@@ -11,7 +11,7 @@ Part of TSK-0046: Service Layer Architecture Reorganization
|
|
|
11
11
|
|
|
12
12
|
import json
|
|
13
13
|
import logging
|
|
14
|
-
from datetime import datetime
|
|
14
|
+
from datetime import datetime, timezone
|
|
15
15
|
from typing import Any, Dict, List, Optional
|
|
16
16
|
|
|
17
17
|
from claude_mpm.core.logger import get_logger
|
|
@@ -92,7 +92,7 @@ class LoggingService(SyncBaseService, IStructuredLogger):
|
|
|
92
92
|
|
|
93
93
|
if self.structured_logging:
|
|
94
94
|
log_entry = {
|
|
95
|
-
"timestamp": datetime.
|
|
95
|
+
"timestamp": datetime.now(timezone.utc).isoformat(),
|
|
96
96
|
"level": level,
|
|
97
97
|
"message": message,
|
|
98
98
|
"context": context,
|