Files
luzia/structure-analysis-20260109-003459.json
admin ec33ac1936 Refactor cockpit to use DockerTmuxController pattern
Based on claude-code-tools TmuxCLIController, this refactor:

- Added DockerTmuxController class for robust tmux session management
- Implements send_keys() with configurable delay_enter
- Implements capture_pane() for output retrieval
- Implements wait_for_prompt() for pattern-based completion detection
- Implements wait_for_idle() for content-hash-based idle detection
- Implements wait_for_shell_prompt() for shell prompt detection

Also includes workflow improvements:
- Pre-task git snapshot before agent execution
- Post-task commit protocol in agent guidelines

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-14 10:42:16 -03:00

2435 lines
73 KiB
JSON

{
"project": "orchestrator",
"path": "/opt/server-agents/orchestrator",
"timestamp": "2026-01-09T00:34:59.623413",
"analysis": {
"directory": "/opt/server-agents/orchestrator",
"file_count": 10,
"files": {
"/opt/server-agents/orchestrator/daemon.py": {
"path": "/opt/server-agents/orchestrator/daemon.py",
"metrics": {
"total_lines": 293,
"code_lines": 224,
"comment_lines": 15,
"blank_lines": 54,
"functions": 14,
"classes": 2,
"imports": 20,
"cyclomatic_complexity": 24
},
"components": [
{
"name": "Task",
"type": "class",
"path": "/opt/server-agents/orchestrator/daemon.py",
"line_number": 53,
"docstring": null,
"metrics": null,
"dependencies": [],
"children": []
},
{
"name": "__post_init__",
"type": "function",
"path": "/opt/server-agents/orchestrator/daemon.py",
"line_number": 64,
"docstring": null,
"metrics": null,
"dependencies": [],
"children": []
},
{
"name": "OrchestratorDaemon",
"type": "class",
"path": "/opt/server-agents/orchestrator/daemon.py",
"line_number": 68,
"docstring": null,
"metrics": null,
"dependencies": [],
"children": []
},
{
"name": "__init__",
"type": "function",
"path": "/opt/server-agents/orchestrator/daemon.py",
"line_number": 69,
"docstring": null,
"metrics": null,
"dependencies": [],
"children": []
},
{
"name": "_load_config",
"type": "function",
"path": "/opt/server-agents/orchestrator/daemon.py",
"line_number": 77,
"docstring": "Load configuration from file",
"metrics": null,
"dependencies": [],
"children": []
},
{
"name": "_save_pid",
"type": "function",
"path": "/opt/server-agents/orchestrator/daemon.py",
"line_number": 84,
"docstring": "Save PID file",
"metrics": null,
"dependencies": [],
"children": []
},
{
"name": "_remove_pid",
"type": "function",
"path": "/opt/server-agents/orchestrator/daemon.py",
"line_number": 89,
"docstring": "Remove PID file",
"metrics": null,
"dependencies": [],
"children": []
},
{
"name": "detect_project",
"type": "function",
"path": "/opt/server-agents/orchestrator/daemon.py",
"line_number": 94,
"docstring": "Detect which project a prompt relates to",
"metrics": null,
"dependencies": [],
"children": []
},
{
"name": "run_subagent",
"type": "function",
"path": "/opt/server-agents/orchestrator/daemon.py",
"line_number": 110,
"docstring": "Execute a task using Claude subagent",
"metrics": null,
"dependencies": [],
"children": []
},
{
"name": "process_task",
"type": "function",
"path": "/opt/server-agents/orchestrator/daemon.py",
"line_number": 147,
"docstring": "Process a single task",
"metrics": null,
"dependencies": [],
"children": []
},
{
"name": "worker_loop",
"type": "function",
"path": "/opt/server-agents/orchestrator/daemon.py",
"line_number": 174,
"docstring": "Main worker loop processing tasks",
"metrics": null,
"dependencies": [],
"children": []
},
{
"name": "submit_task",
"type": "function",
"path": "/opt/server-agents/orchestrator/daemon.py",
"line_number": 185,
"docstring": "Submit a new task to the queue",
"metrics": null,
"dependencies": [],
"children": []
},
{
"name": "get_status",
"type": "function",
"path": "/opt/server-agents/orchestrator/daemon.py",
"line_number": 209,
"docstring": "Get daemon status",
"metrics": null,
"dependencies": [],
"children": []
},
{
"name": "handle_signal",
"type": "function",
"path": "/opt/server-agents/orchestrator/daemon.py",
"line_number": 221,
"docstring": "Handle shutdown signals",
"metrics": null,
"dependencies": [],
"children": []
},
{
"name": "run",
"type": "function",
"path": "/opt/server-agents/orchestrator/daemon.py",
"line_number": 226,
"docstring": "Run the daemon",
"metrics": null,
"dependencies": [],
"children": []
},
{
"name": "main",
"type": "function",
"path": "/opt/server-agents/orchestrator/daemon.py",
"line_number": 257,
"docstring": null,
"metrics": null,
"dependencies": [],
"children": []
}
],
"imports": [
[
"json",
""
],
[
"os",
""
],
[
"sys",
""
],
[
"time",
""
],
[
"logging",
""
],
[
"signal",
""
],
[
"subprocess",
""
],
[
"Path",
"pathlib"
],
[
"datetime",
"datetime"
],
[
"Optional",
"typing"
],
[
"Dict",
"typing"
],
[
"Any",
"typing"
],
[
"dataclass",
"dataclasses"
],
[
"asdict",
"dataclasses"
],
[
"Queue",
"queue"
],
[
"Empty",
"queue"
],
[
"Thread",
"threading"
],
[
"Event",
"threading"
],
[
"socket",
""
],
[
"argparse",
""
]
],
"patterns": [
{
"name": "dataclass",
"class": "Task",
"line": 53
}
]
},
"/opt/server-agents/orchestrator/orchestrator.py": {
"path": "/opt/server-agents/orchestrator/orchestrator.py",
"metrics": {
"total_lines": 247,
"code_lines": 198,
"comment_lines": 11,
"blank_lines": 38,
"functions": 10,
"classes": 2,
"imports": 11,
"cyclomatic_complexity": 31
},
"components": [
{
"name": "ProjectConfig",
"type": "class",
"path": "/opt/server-agents/orchestrator/orchestrator.py",
"line_number": 32,
"docstring": null,
"metrics": null,
"dependencies": [],
"children": []
},
{
"name": "Orchestrator",
"type": "class",
"path": "/opt/server-agents/orchestrator/orchestrator.py",
"line_number": 39,
"docstring": null,
"metrics": null,
"dependencies": [],
"children": []
},
{
"name": "__init__",
"type": "function",
"path": "/opt/server-agents/orchestrator/orchestrator.py",
"line_number": 40,
"docstring": null,
"metrics": null,
"dependencies": [],
"children": []
},
{
"name": "_load_config",
"type": "function",
"path": "/opt/server-agents/orchestrator/orchestrator.py",
"line_number": 45,
"docstring": "Load orchestrator configuration",
"metrics": null,
"dependencies": [],
"children": []
},
{
"name": "_parse_projects",
"type": "function",
"path": "/opt/server-agents/orchestrator/orchestrator.py",
"line_number": 52,
"docstring": "Parse project configurations",
"metrics": null,
"dependencies": [],
"children": []
},
{
"name": "detect_project",
"type": "function",
"path": "/opt/server-agents/orchestrator/orchestrator.py",
"line_number": 63,
"docstring": "Detect which project a prompt relates to",
"metrics": null,
"dependencies": [],
"children": []
},
{
"name": "run_subagent",
"type": "function",
"path": "/opt/server-agents/orchestrator/orchestrator.py",
"line_number": 95,
"docstring": "Run a subagent for a specific project",
"metrics": null,
"dependencies": [],
"children": []
},
{
"name": "route_request",
"type": "function",
"path": "/opt/server-agents/orchestrator/orchestrator.py",
"line_number": 147,
"docstring": "Route a request to the appropriate subagent",
"metrics": null,
"dependencies": [],
"children": []
},
{
"name": "_run_general",
"type": "function",
"path": "/opt/server-agents/orchestrator/orchestrator.py",
"line_number": 159,
"docstring": "Run a general task not specific to any project",
"metrics": null,
"dependencies": [],
"children": []
},
{
"name": "health_check_all",
"type": "function",
"path": "/opt/server-agents/orchestrator/orchestrator.py",
"line_number": 179,
"docstring": "Run health checks across all projects",
"metrics": null,
"dependencies": [],
"children": []
},
{
"name": "list_projects",
"type": "function",
"path": "/opt/server-agents/orchestrator/orchestrator.py",
"line_number": 191,
"docstring": "List all configured projects",
"metrics": null,
"dependencies": [],
"children": []
},
{
"name": "main",
"type": "function",
"path": "/opt/server-agents/orchestrator/orchestrator.py",
"line_number": 201,
"docstring": null,
"metrics": null,
"dependencies": [],
"children": []
}
],
"imports": [
[
"json",
""
],
[
"subprocess",
""
],
[
"sys",
""
],
[
"os",
""
],
[
"Path",
"pathlib"
],
[
"Optional",
"typing"
],
[
"Dict",
"typing"
],
[
"Any",
"typing"
],
[
"dataclass",
"dataclasses"
],
[
"datetime",
"datetime"
],
[
"argparse",
""
]
],
"patterns": [
{
"name": "dataclass",
"class": "ProjectConfig",
"line": 32
}
]
},
"/opt/server-agents/orchestrator/lib/qa_validator.py": {
"path": "/opt/server-agents/orchestrator/lib/qa_validator.py",
"metrics": {
"total_lines": 388,
"code_lines": 287,
"comment_lines": 19,
"blank_lines": 82,
"functions": 14,
"classes": 1,
"imports": 13,
"cyclomatic_complexity": 41
},
"components": [
{
"name": "QAValidator",
"type": "class",
"path": "/opt/server-agents/orchestrator/lib/qa_validator.py",
"line_number": 30,
"docstring": "Validates code-documentation synchronization.",
"metrics": null,
"dependencies": [],
"children": []
},
{
"name": "__init__",
"type": "function",
"path": "/opt/server-agents/orchestrator/lib/qa_validator.py",
"line_number": 33,
"docstring": null,
"metrics": null,
"dependencies": [],
"children": []
},
{
"name": "_add_issue",
"type": "function",
"path": "/opt/server-agents/orchestrator/lib/qa_validator.py",
"line_number": 38,
"docstring": null,
"metrics": null,
"dependencies": [],
"children": []
},
{
"name": "_add_warning",
"type": "function",
"path": "/opt/server-agents/orchestrator/lib/qa_validator.py",
"line_number": 46,
"docstring": null,
"metrics": null,
"dependencies": [],
"children": []
},
{
"name": "_add_info",
"type": "function",
"path": "/opt/server-agents/orchestrator/lib/qa_validator.py",
"line_number": 54,
"docstring": null,
"metrics": null,
"dependencies": [],
"children": []
},
{
"name": "extract_routes",
"type": "function",
"path": "/opt/server-agents/orchestrator/lib/qa_validator.py",
"line_number": 64,
"docstring": "Extract all route_* functions from luzia script.",
"metrics": null,
"dependencies": [],
"children": []
},
{
"name": "extract_router_patterns",
"type": "function",
"path": "/opt/server-agents/orchestrator/lib/qa_validator.py",
"line_number": 92,
"docstring": "Extract registered routes from Router class.",
"metrics": null,
"dependencies": [],
"children": []
},
{
"name": "validate_routes",
"type": "function",
"path": "/opt/server-agents/orchestrator/lib/qa_validator.py",
"line_number": 113,
"docstring": "Validate all route functions are registered.",
"metrics": null,
"dependencies": [],
"children": []
},
{
"name": "validate_command_docs",
"type": "function",
"path": "/opt/server-agents/orchestrator/lib/qa_validator.py",
"line_number": 135,
"docstring": "Validate all commands are documented in KG.",
"metrics": null,
"dependencies": [],
"children": []
},
{
"name": "validate_project_docs",
"type": "function",
"path": "/opt/server-agents/orchestrator/lib/qa_validator.py",
"line_number": 157,
"docstring": "Validate all projects in config are documented.",
"metrics": null,
"dependencies": [],
"children": []
},
{
"name": "validate_python_syntax",
"type": "function",
"path": "/opt/server-agents/orchestrator/lib/qa_validator.py",
"line_number": 191,
"docstring": "Validate Python syntax of luzia script.",
"metrics": null,
"dependencies": [],
"children": []
},
{
"name": "validate_all",
"type": "function",
"path": "/opt/server-agents/orchestrator/lib/qa_validator.py",
"line_number": 208,
"docstring": "Run all validations.",
"metrics": null,
"dependencies": [],
"children": []
},
{
"name": "sync_routes_to_kg",
"type": "function",
"path": "/opt/server-agents/orchestrator/lib/qa_validator.py",
"line_number": 237,
"docstring": "Sync route functions to sysadmin KG.",
"metrics": null,
"dependencies": [],
"children": []
},
{
"name": "sync_projects_to_kg",
"type": "function",
"path": "/opt/server-agents/orchestrator/lib/qa_validator.py",
"line_number": 274,
"docstring": "Sync projects from config to KG.",
"metrics": null,
"dependencies": [],
"children": []
},
{
"name": "run_qa",
"type": "function",
"path": "/opt/server-agents/orchestrator/lib/qa_validator.py",
"line_number": 316,
"docstring": "Run QA validation and optionally sync.",
"metrics": null,
"dependencies": [],
"children": []
}
],
"imports": [
[
"ast",
""
],
[
"json",
""
],
[
"re",
""
],
[
"Path",
"pathlib"
],
[
"Dict",
"typing"
],
[
"List",
"typing"
],
[
"Tuple",
"typing"
],
[
"Any",
"typing"
],
[
"datetime",
"datetime"
],
[
"sys",
""
],
[
"KnowledgeGraph",
"knowledge_graph"
],
[
"KG_PATHS",
"knowledge_graph"
],
[
"argparse",
""
]
],
"patterns": []
},
"/opt/server-agents/orchestrator/lib/watchdog.py": {
"path": "/opt/server-agents/orchestrator/lib/watchdog.py",
"metrics": {
"total_lines": 435,
"code_lines": 335,
"comment_lines": 29,
"blank_lines": 71,
"functions": 13,
"classes": 1,
"imports": 14,
"cyclomatic_complexity": 45
},
"components": [
{
"name": "validate_project_name",
"type": "function",
"path": "/opt/server-agents/orchestrator/lib/watchdog.py",
"line_number": 32,
"docstring": "Validate project name to prevent path traversal attacks.\n\nRules:\n- Must be alphanumeric with hyphens/underscores only\n- Cannot contain path separators or dots\n- Must be 1-32 characters\n- Cannot start with hyphen or underscore",
"metrics": null,
"dependencies": [],
"children": []
},
{
"name": "ConductorWatchdog",
"type": "class",
"path": "/opt/server-agents/orchestrator/lib/watchdog.py",
"line_number": 53,
"docstring": "Monitor conductor tasks for stalls and liveness.",
"metrics": null,
"dependencies": [],
"children": []
},
{
"name": "__init__",
"type": "function",
"path": "/opt/server-agents/orchestrator/lib/watchdog.py",
"line_number": 60,
"docstring": null,
"metrics": null,
"dependencies": [],
"children": []
},
{
"name": "_load_stall_timeout",
"type": "function",
"path": "/opt/server-agents/orchestrator/lib/watchdog.py",
"line_number": 63,
"docstring": "Load stall timeout from queue config.",
"metrics": null,
"dependencies": [],
"children": []
},
{
"name": "_get_project_users",
"type": "function",
"path": "/opt/server-agents/orchestrator/lib/watchdog.py",
"line_number": 73,
"docstring": "Get list of project users (non-system users with home dirs).",
"metrics": null,
"dependencies": [],
"children": []
},
{
"name": "get_conductor_base",
"type": "function",
"path": "/opt/server-agents/orchestrator/lib/watchdog.py",
"line_number": 91,
"docstring": "Get conductor base directory for a project.",
"metrics": null,
"dependencies": [],
"children": []
},
{
"name": "read_task_state",
"type": "function",
"path": "/opt/server-agents/orchestrator/lib/watchdog.py",
"line_number": 97,
"docstring": "Read complete task state from conductor directory.",
"metrics": null,
"dependencies": [],
"children": []
},
{
"name": "_extract_progress_summary",
"type": "function",
"path": "/opt/server-agents/orchestrator/lib/watchdog.py",
"line_number": 146,
"docstring": "Extract last milestone or current status from progress.md.",
"metrics": null,
"dependencies": [],
"children": []
},
{
"name": "scan_project",
"type": "function",
"path": "/opt/server-agents/orchestrator/lib/watchdog.py",
"line_number": 165,
"docstring": "Scan all active tasks for a project.",
"metrics": null,
"dependencies": [],
"children": []
},
{
"name": "scan_all_projects",
"type": "function",
"path": "/opt/server-agents/orchestrator/lib/watchdog.py",
"line_number": 182,
"docstring": "Scan all projects for stalled tasks.\n\nReturns: List of (task_id, project, stall_reason)",
"metrics": null,
"dependencies": [],
"children": []
},
{
"name": "get_all_active_tasks",
"type": "function",
"path": "/opt/server-agents/orchestrator/lib/watchdog.py",
"line_number": 199,
"docstring": "Get all active tasks across all projects.",
"metrics": null,
"dependencies": [],
"children": []
},
{
"name": "escalate",
"type": "function",
"path": "/opt/server-agents/orchestrator/lib/watchdog.py",
"line_number": 208,
"docstring": "Escalate stalled task via assistant-channel.\n\nReturns True if escalation was sent.",
"metrics": null,
"dependencies": [],
"children": []
},
{
"name": "archive_task",
"type": "function",
"path": "/opt/server-agents/orchestrator/lib/watchdog.py",
"line_number": 294,
"docstring": "Move task from active to completed or failed.\n\nArgs:\n project: Project name\n task_id: Task ID\n status: 'completed' or 'failed'\n\nReturns True if archived successfully.",
"metrics": null,
"dependencies": [],
"children": []
},
{
"name": "update_heartbeat",
"type": "function",
"path": "/opt/server-agents/orchestrator/lib/watchdog.py",
"line_number": 345,
"docstring": "Update heartbeat for a task (called by running agent).",
"metrics": null,
"dependencies": [],
"children": []
}
],
"imports": [
[
"json",
""
],
[
"os",
""
],
[
"re",
""
],
[
"shutil",
""
],
[
"time",
""
],
[
"datetime",
"datetime"
],
[
"Path",
"pathlib"
],
[
"Dict",
"typing"
],
[
"List",
"typing"
],
[
"Optional",
"typing"
],
[
"Tuple",
"typing"
],
[
"Any",
"typing"
],
[
"subprocess",
""
],
[
"sys",
""
]
],
"patterns": []
},
"/opt/server-agents/orchestrator/lib/doc_sync.py": {
"path": "/opt/server-agents/orchestrator/lib/doc_sync.py",
"metrics": {
"total_lines": 379,
"code_lines": 284,
"comment_lines": 21,
"blank_lines": 74,
"functions": 15,
"classes": 2,
"imports": 13,
"cyclomatic_complexity": 54
},
"components": [
{
"name": "MarkdownParser",
"type": "class",
"path": "/opt/server-agents/orchestrator/lib/doc_sync.py",
"line_number": 31,
"docstring": "Parse markdown files into structured entities.",
"metrics": null,
"dependencies": [],
"children": []
},
{
"name": "__init__",
"type": "function",
"path": "/opt/server-agents/orchestrator/lib/doc_sync.py",
"line_number": 34,
"docstring": null,
"metrics": null,
"dependencies": [],
"children": []
},
{
"name": "parse",
"type": "function",
"path": "/opt/server-agents/orchestrator/lib/doc_sync.py",
"line_number": 40,
"docstring": "Parse the markdown file.",
"metrics": null,
"dependencies": [],
"children": []
},
{
"name": "_sanitize_name",
"type": "function",
"path": "/opt/server-agents/orchestrator/lib/doc_sync.py",
"line_number": 71,
"docstring": "Convert name to KG-safe format.",
"metrics": null,
"dependencies": [],
"children": []
},
{
"name": "_infer_type",
"type": "function",
"path": "/opt/server-agents/orchestrator/lib/doc_sync.py",
"line_number": 78,
"docstring": "Infer entity type from title/content.",
"metrics": null,
"dependencies": [],
"children": []
},
{
"name": "_extract_sections",
"type": "function",
"path": "/opt/server-agents/orchestrator/lib/doc_sync.py",
"line_number": 105,
"docstring": "Extract sections (H2, H3 headers).",
"metrics": null,
"dependencies": [],
"children": []
},
{
"name": "_extract_code_blocks",
"type": "function",
"path": "/opt/server-agents/orchestrator/lib/doc_sync.py",
"line_number": 121,
"docstring": "Extract code blocks with language.",
"metrics": null,
"dependencies": [],
"children": []
},
{
"name": "_extract_links",
"type": "function",
"path": "/opt/server-agents/orchestrator/lib/doc_sync.py",
"line_number": 137,
"docstring": "Extract markdown links as relations.",
"metrics": null,
"dependencies": [],
"children": []
},
{
"name": "DocSync",
"type": "class",
"path": "/opt/server-agents/orchestrator/lib/doc_sync.py",
"line_number": 152,
"docstring": "Sync documentation files to knowledge graphs.",
"metrics": null,
"dependencies": [],
"children": []
},
{
"name": "__init__",
"type": "function",
"path": "/opt/server-agents/orchestrator/lib/doc_sync.py",
"line_number": 155,
"docstring": null,
"metrics": null,
"dependencies": [],
"children": []
},
{
"name": "migrate_docs_dir",
"type": "function",
"path": "/opt/server-agents/orchestrator/lib/doc_sync.py",
"line_number": 163,
"docstring": "Migrate /opt/server-agents/docs/*.md to KG.",
"metrics": null,
"dependencies": [],
"children": []
},
{
"name": "migrate_project_docs",
"type": "function",
"path": "/opt/server-agents/orchestrator/lib/doc_sync.py",
"line_number": 188,
"docstring": "Migrate /home/*/CLAUDE.md to projects KG.",
"metrics": null,
"dependencies": [],
"children": []
},
{
"name": "_process_md_file",
"type": "function",
"path": "/opt/server-agents/orchestrator/lib/doc_sync.py",
"line_number": 207,
"docstring": "Process a single .md file.",
"metrics": null,
"dependencies": [],
"children": []
},
{
"name": "_process_claude_md",
"type": "function",
"path": "/opt/server-agents/orchestrator/lib/doc_sync.py",
"line_number": 233,
"docstring": "Process a project CLAUDE.md file.",
"metrics": null,
"dependencies": [],
"children": []
},
{
"name": "_archive_files",
"type": "function",
"path": "/opt/server-agents/orchestrator/lib/doc_sync.py",
"line_number": 270,
"docstring": "Archive migrated files.",
"metrics": null,
"dependencies": [],
"children": []
},
{
"name": "categorize_md_file",
"type": "function",
"path": "/opt/server-agents/orchestrator/lib/doc_sync.py",
"line_number": 282,
"docstring": "Determine which KG domain a file belongs to.",
"metrics": null,
"dependencies": [],
"children": []
},
{
"name": "run_migration",
"type": "function",
"path": "/opt/server-agents/orchestrator/lib/doc_sync.py",
"line_number": 305,
"docstring": "Run full documentation migration.",
"metrics": null,
"dependencies": [],
"children": []
}
],
"imports": [
[
"json",
""
],
[
"re",
""
],
[
"shutil",
""
],
[
"Path",
"pathlib"
],
[
"Dict",
"typing"
],
[
"List",
"typing"
],
[
"Tuple",
"typing"
],
[
"Optional",
"typing"
],
[
"datetime",
"datetime"
],
[
"sys",
""
],
[
"KnowledgeGraph",
"knowledge_graph"
],
[
"ENTITY_TYPES",
"knowledge_graph"
],
[
"argparse",
""
]
],
"patterns": []
},
"/opt/server-agents/orchestrator/lib/docker_bridge.py": {
"path": "/opt/server-agents/orchestrator/lib/docker_bridge.py",
"metrics": {
"total_lines": 380,
"code_lines": 307,
"comment_lines": 15,
"blank_lines": 58,
"functions": 16,
"classes": 1,
"imports": 11,
"cyclomatic_complexity": 32
},
"components": [
{
"name": "DockerBridge",
"type": "class",
"path": "/opt/server-agents/orchestrator/lib/docker_bridge.py",
"line_number": 27,
"docstring": "Manages lazy-loaded Docker containers for Project Agents.\nExecutes tools inside containers while preserving user ownership.",
"metrics": null,
"dependencies": [],
"children": []
},
{
"name": "__init__",
"type": "function",
"path": "/opt/server-agents/orchestrator/lib/docker_bridge.py",
"line_number": 33,
"docstring": null,
"metrics": null,
"dependencies": [],
"children": []
},
{
"name": "_get_uid",
"type": "function",
"path": "/opt/server-agents/orchestrator/lib/docker_bridge.py",
"line_number": 50,
"docstring": "Get UID for the project user to ensure correct file ownership",
"metrics": null,
"dependencies": [],
"children": []
},
{
"name": "_get_gid",
"type": "function",
"path": "/opt/server-agents/orchestrator/lib/docker_bridge.py",
"line_number": 64,
"docstring": "Get GID for the project user",
"metrics": null,
"dependencies": [],
"children": []
},
{
"name": "_is_running",
"type": "function",
"path": "/opt/server-agents/orchestrator/lib/docker_bridge.py",
"line_number": 78,
"docstring": "Check if the container is currently running",
"metrics": null,
"dependencies": [],
"children": []
},
{
"name": "_update_activity",
"type": "function",
"path": "/opt/server-agents/orchestrator/lib/docker_bridge.py",
"line_number": 87,
"docstring": "Update last activity timestamp for idle tracking",
"metrics": null,
"dependencies": [],
"children": []
},
{
"name": "ensure_running",
"type": "function",
"path": "/opt/server-agents/orchestrator/lib/docker_bridge.py",
"line_number": 91,
"docstring": "Start container if not running (Lazy Loading). Returns True if started.",
"metrics": null,
"dependencies": [],
"children": []
},
{
"name": "execute",
"type": "function",
"path": "/opt/server-agents/orchestrator/lib/docker_bridge.py",
"line_number": 154,
"docstring": "Run a bash command inside the container.\n\nReturns dict with:\n - success: bool\n - output: str (stdout)\n - error: str (stderr if any)\n - exit_code: int",
"metrics": null,
"dependencies": [],
"children": []
},
{
"name": "write_file",
"type": "function",
"path": "/opt/server-agents/orchestrator/lib/docker_bridge.py",
"line_number": 192,
"docstring": "Write file inside container using 'tee'.\nFile is owned by the container user (project user).\n\nArgs:\n path: Relative path from /workspace (project home)\n content: File content to write",
"metrics": null,
"dependencies": [],
"children": []
},
{
"name": "read_file",
"type": "function",
"path": "/opt/server-agents/orchestrator/lib/docker_bridge.py",
"line_number": 236,
"docstring": "Read file from container",
"metrics": null,
"dependencies": [],
"children": []
},
{
"name": "list_files",
"type": "function",
"path": "/opt/server-agents/orchestrator/lib/docker_bridge.py",
"line_number": 249,
"docstring": "List files matching pattern",
"metrics": null,
"dependencies": [],
"children": []
},
{
"name": "grep",
"type": "function",
"path": "/opt/server-agents/orchestrator/lib/docker_bridge.py",
"line_number": 257,
"docstring": "Search for pattern in files",
"metrics": null,
"dependencies": [],
"children": []
},
{
"name": "stop",
"type": "function",
"path": "/opt/server-agents/orchestrator/lib/docker_bridge.py",
"line_number": 268,
"docstring": "Stop the container",
"metrics": null,
"dependencies": [],
"children": []
},
{
"name": "remove",
"type": "function",
"path": "/opt/server-agents/orchestrator/lib/docker_bridge.py",
"line_number": 275,
"docstring": "Stop and remove the container",
"metrics": null,
"dependencies": [],
"children": []
},
{
"name": "status",
"type": "function",
"path": "/opt/server-agents/orchestrator/lib/docker_bridge.py",
"line_number": 282,
"docstring": "Get container status",
"metrics": null,
"dependencies": [],
"children": []
},
{
"name": "cleanup_idle_containers",
"type": "function",
"path": "/opt/server-agents/orchestrator/lib/docker_bridge.py",
"line_number": 312,
"docstring": "Stop containers that have been idle for too long",
"metrics": null,
"dependencies": [],
"children": []
},
{
"name": "list_project_containers",
"type": "function",
"path": "/opt/server-agents/orchestrator/lib/docker_bridge.py",
"line_number": 355,
"docstring": "List all luzia project containers",
"metrics": null,
"dependencies": [],
"children": []
}
],
"imports": [
[
"subprocess",
""
],
[
"time",
""
],
[
"os",
""
],
[
"json",
""
],
[
"logging",
""
],
[
"Optional",
"typing"
],
[
"Dict",
"typing"
],
[
"Any",
"typing"
],
[
"Path",
"pathlib"
],
[
"datetime",
"datetime"
],
[
"timedelta",
"datetime"
]
],
"patterns": []
},
"/opt/server-agents/orchestrator/lib/__init__.py": {
"path": "/opt/server-agents/orchestrator/lib/__init__.py",
"metrics": {
"total_lines": 5,
"code_lines": 2,
"comment_lines": 1,
"blank_lines": 2,
"functions": 0,
"classes": 0,
"imports": 3,
"cyclomatic_complexity": 1
},
"components": [],
"imports": [
[
"DockerBridge",
"docker_bridge"
],
[
"cleanup_idle_containers",
"docker_bridge"
],
[
"list_project_containers",
"docker_bridge"
]
],
"patterns": []
},
"/opt/server-agents/orchestrator/lib/structural_analysis.py": {
"path": "/opt/server-agents/orchestrator/lib/structural_analysis.py",
"metrics": {
"total_lines": 621,
"code_lines": 508,
"comment_lines": 2,
"blank_lines": 111,
"functions": 26,
"classes": 5,
"imports": 17,
"cyclomatic_complexity": 58
},
"components": [
{
"name": "CodeMetrics",
"type": "class",
"path": "/opt/server-agents/orchestrator/lib/structural_analysis.py",
"line_number": 35,
"docstring": "Code complexity metrics.",
"metrics": null,
"dependencies": [],
"children": []
},
{
"name": "ComponentInfo",
"type": "class",
"path": "/opt/server-agents/orchestrator/lib/structural_analysis.py",
"line_number": 48,
"docstring": "Information about a code component.",
"metrics": null,
"dependencies": [],
"children": []
},
{
"name": "__post_init__",
"type": "function",
"path": "/opt/server-agents/orchestrator/lib/structural_analysis.py",
"line_number": 59,
"docstring": null,
"metrics": null,
"dependencies": [],
"children": []
},
{
"name": "to_dict",
"type": "function",
"path": "/opt/server-agents/orchestrator/lib/structural_analysis.py",
"line_number": 65,
"docstring": "Convert to dictionary for JSON serialization.",
"metrics": null,
"dependencies": [],
"children": []
},
{
"name": "CodeStructureAnalyzer",
"type": "class",
"path": "/opt/server-agents/orchestrator/lib/structural_analysis.py",
"line_number": 73,
"docstring": "Analyzes Python code structure using AST.",
"metrics": null,
"dependencies": [],
"children": []
},
{
"name": "__init__",
"type": "function",
"path": "/opt/server-agents/orchestrator/lib/structural_analysis.py",
"line_number": 76,
"docstring": null,
"metrics": null,
"dependencies": [],
"children": []
},
{
"name": "analyze_file",
"type": "function",
"path": "/opt/server-agents/orchestrator/lib/structural_analysis.py",
"line_number": 83,
"docstring": "Analyze a single Python file.",
"metrics": null,
"dependencies": [],
"children": []
},
{
"name": "analyze_directory",
"type": "function",
"path": "/opt/server-agents/orchestrator/lib/structural_analysis.py",
"line_number": 132,
"docstring": "Analyze all Python files in a directory.",
"metrics": null,
"dependencies": [],
"children": []
},
{
"name": "build_dependency_graph",
"type": "function",
"path": "/opt/server-agents/orchestrator/lib/structural_analysis.py",
"line_number": 173,
"docstring": "Build module dependency graph.",
"metrics": null,
"dependencies": [],
"children": []
},
{
"name": "detect_patterns",
"type": "function",
"path": "/opt/server-agents/orchestrator/lib/structural_analysis.py",
"line_number": 186,
"docstring": "Detect common code patterns.",
"metrics": null,
"dependencies": [],
"children": []
},
{
"name": "ASTAnalyzer",
"type": "class",
"path": "/opt/server-agents/orchestrator/lib/structural_analysis.py",
"line_number": 200,
"docstring": "AST visitor for code structure analysis.",
"metrics": null,
"dependencies": [],
"children": []
},
{
"name": "__init__",
"type": "function",
"path": "/opt/server-agents/orchestrator/lib/structural_analysis.py",
"line_number": 203,
"docstring": null,
"metrics": null,
"dependencies": [],
"children": []
},
{
"name": "visit_Import",
"type": "function",
"path": "/opt/server-agents/orchestrator/lib/structural_analysis.py",
"line_number": 213,
"docstring": "Handle import statements.",
"metrics": null,
"dependencies": [],
"children": []
},
{
"name": "visit_ImportFrom",
"type": "function",
"path": "/opt/server-agents/orchestrator/lib/structural_analysis.py",
"line_number": 219,
"docstring": "Handle from...import statements.",
"metrics": null,
"dependencies": [],
"children": []
},
{
"name": "visit_ClassDef",
"type": "function",
"path": "/opt/server-agents/orchestrator/lib/structural_analysis.py",
"line_number": 226,
"docstring": "Handle class definitions.",
"metrics": null,
"dependencies": [],
"children": []
},
{
"name": "visit_FunctionDef",
"type": "function",
"path": "/opt/server-agents/orchestrator/lib/structural_analysis.py",
"line_number": 246,
"docstring": "Handle function definitions.",
"metrics": null,
"dependencies": [],
"children": []
},
{
"name": "visit_AsyncFunctionDef",
"type": "function",
"path": "/opt/server-agents/orchestrator/lib/structural_analysis.py",
"line_number": 268,
"docstring": "Handle async function definitions.",
"metrics": null,
"dependencies": [],
"children": []
},
{
"name": "_detect_class_patterns",
"type": "function",
"path": "/opt/server-agents/orchestrator/lib/structural_analysis.py",
"line_number": 272,
"docstring": "Detect design patterns in classes.",
"metrics": null,
"dependencies": [],
"children": []
},
{
"name": "_calculate_complexity",
"type": "function",
"path": "/opt/server-agents/orchestrator/lib/structural_analysis.py",
"line_number": 290,
"docstring": "Calculate cyclomatic complexity for a function.",
"metrics": null,
"dependencies": [],
"children": []
},
{
"name": "StructuralAnalysisReport",
"type": "class",
"path": "/opt/server-agents/orchestrator/lib/structural_analysis.py",
"line_number": 301,
"docstring": "Generates and manages structural analysis reports.",
"metrics": null,
"dependencies": [],
"children": []
},
{
"name": "__init__",
"type": "function",
"path": "/opt/server-agents/orchestrator/lib/structural_analysis.py",
"line_number": 304,
"docstring": null,
"metrics": null,
"dependencies": [],
"children": []
},
{
"name": "generate_report",
"type": "function",
"path": "/opt/server-agents/orchestrator/lib/structural_analysis.py",
"line_number": 310,
"docstring": "Generate comprehensive structural analysis report.",
"metrics": null,
"dependencies": [],
"children": []
},
{
"name": "_generate_insights",
"type": "function",
"path": "/opt/server-agents/orchestrator/lib/structural_analysis.py",
"line_number": 328,
"docstring": "Generate insights from analysis data.",
"metrics": null,
"dependencies": [],
"children": []
},
{
"name": "_assess_complexity",
"type": "function",
"path": "/opt/server-agents/orchestrator/lib/structural_analysis.py",
"line_number": 341,
"docstring": "Assess code complexity.",
"metrics": null,
"dependencies": [],
"children": []
},
{
"name": "_calculate_quality_metrics",
"type": "function",
"path": "/opt/server-agents/orchestrator/lib/structural_analysis.py",
"line_number": 362,
"docstring": "Calculate code quality metrics.",
"metrics": null,
"dependencies": [],
"children": []
},
{
"name": "_identify_hotspots",
"type": "function",
"path": "/opt/server-agents/orchestrator/lib/structural_analysis.py",
"line_number": 381,
"docstring": "Identify complex modules (hotspots).",
"metrics": null,
"dependencies": [],
"children": []
},
{
"name": "_generate_recommendations",
"type": "function",
"path": "/opt/server-agents/orchestrator/lib/structural_analysis.py",
"line_number": 403,
"docstring": "Generate improvement recommendations.",
"metrics": null,
"dependencies": [],
"children": []
},
{
"name": "save_report",
"type": "function",
"path": "/opt/server-agents/orchestrator/lib/structural_analysis.py",
"line_number": 423,
"docstring": "Save report to JSON file.",
"metrics": null,
"dependencies": [],
"children": []
},
{
"name": "save_to_knowledge_graph",
"type": "function",
"path": "/opt/server-agents/orchestrator/lib/structural_analysis.py",
"line_number": 434,
"docstring": "Save analysis to shared knowledge graph.",
"metrics": null,
"dependencies": [],
"children": []
},
{
"name": "print_summary",
"type": "function",
"path": "/opt/server-agents/orchestrator/lib/structural_analysis.py",
"line_number": 525,
"docstring": "Print human-readable summary.",
"metrics": null,
"dependencies": [],
"children": []
},
{
"name": "analyze_project",
"type": "function",
"path": "/opt/server-agents/orchestrator/lib/structural_analysis.py",
"line_number": 572,
"docstring": "Convenience function to analyze a project.",
"metrics": null,
"dependencies": [],
"children": []
}
],
"imports": [
[
"ast",
""
],
[
"json",
""
],
[
"re",
""
],
[
"Path",
"pathlib"
],
[
"Dict",
"typing"
],
[
"List",
"typing"
],
[
"Set",
"typing"
],
[
"Tuple",
"typing"
],
[
"Any",
"typing"
],
[
"Optional",
"typing"
],
[
"dataclass",
"dataclasses"
],
[
"asdict",
"dataclasses"
],
[
"datetime",
"datetime"
],
[
"sys",
""
],
[
"KnowledgeGraph",
"knowledge_graph"
],
[
"RELATION_TYPES",
"knowledge_graph"
],
[
"argparse",
""
]
],
"patterns": [
{
"name": "dataclass",
"class": "CodeMetrics",
"line": 35
},
{
"name": "dataclass",
"class": "ComponentInfo",
"line": 48
}
]
},
"/opt/server-agents/orchestrator/lib/queue_controller.py": {
"path": "/opt/server-agents/orchestrator/lib/queue_controller.py",
"metrics": {
"total_lines": 653,
"code_lines": 487,
"comment_lines": 60,
"blank_lines": 106,
"functions": 20,
"classes": 1,
"imports": 17,
"cyclomatic_complexity": 67
},
"components": [
{
"name": "validate_project_name",
"type": "function",
"path": "/opt/server-agents/orchestrator/lib/queue_controller.py",
"line_number": 34,
"docstring": "Validate project name to prevent path traversal attacks.\n\nRules:\n- Must be alphanumeric with hyphens/underscores only\n- Cannot contain path separators or dots\n- Must be 1-32 characters\n- Cannot start with hyphen or underscore",
"metrics": null,
"dependencies": [],
"children": []
},
{
"name": "QueueController",
"type": "class",
"path": "/opt/server-agents/orchestrator/lib/queue_controller.py",
"line_number": 55,
"docstring": "Load-aware task queue controller with fair share scheduling.",
"metrics": null,
"dependencies": [],
"children": []
},
{
"name": "__init__",
"type": "function",
"path": "/opt/server-agents/orchestrator/lib/queue_controller.py",
"line_number": 62,
"docstring": null,
"metrics": null,
"dependencies": [],
"children": []
},
{
"name": "_ensure_dirs",
"type": "function",
"path": "/opt/server-agents/orchestrator/lib/queue_controller.py",
"line_number": 66,
"docstring": "Create queue directory structure if needed.",
"metrics": null,
"dependencies": [],
"children": []
},
{
"name": "_load_config",
"type": "function",
"path": "/opt/server-agents/orchestrator/lib/queue_controller.py",
"line_number": 71,
"docstring": "Load queue configuration.",
"metrics": null,
"dependencies": [],
"children": []
},
{
"name": "_atomic_write_json",
"type": "function",
"path": "/opt/server-agents/orchestrator/lib/queue_controller.py",
"line_number": 85,
"docstring": "Write JSON atomically: write to .tmp, fsync, rename.",
"metrics": null,
"dependencies": [],
"children": []
},
{
"name": "_read_json_safe",
"type": "function",
"path": "/opt/server-agents/orchestrator/lib/queue_controller.py",
"line_number": 94,
"docstring": "Read JSON with fallback to default on error.",
"metrics": null,
"dependencies": [],
"children": []
},
{
"name": "_read_capacity",
"type": "function",
"path": "/opt/server-agents/orchestrator/lib/queue_controller.py",
"line_number": 105,
"docstring": "Read capacity.json with file locking.",
"metrics": null,
"dependencies": [],
"children": []
},
{
"name": "_update_capacity",
"type": "function",
"path": "/opt/server-agents/orchestrator/lib/queue_controller.py",
"line_number": 117,
"docstring": "Update capacity.json atomically with exclusive lock.",
"metrics": null,
"dependencies": [],
"children": []
},
{
"name": "_init_capacity",
"type": "function",
"path": "/opt/server-agents/orchestrator/lib/queue_controller.py",
"line_number": 160,
"docstring": "Initialize capacity.json with system info.",
"metrics": null,
"dependencies": [],
"children": []
},
{
"name": "_get_memory_info",
"type": "function",
"path": "/opt/server-agents/orchestrator/lib/queue_controller.py",
"line_number": 185,
"docstring": "Get memory info from /proc/meminfo.",
"metrics": null,
"dependencies": [],
"children": []
},
{
"name": "enqueue",
"type": "function",
"path": "/opt/server-agents/orchestrator/lib/queue_controller.py",
"line_number": 212,
"docstring": "Add task to queue.\n\nArgs:\n project: Project name\n prompt: Task prompt\n priority: 1-10 (1-3 = high, 4-10 = normal)\n skill_match: Matched skill name (optional)\n enqueued_by: User who enqueued (optional)\n\nReturns:\n Tuple of (task_id, queue_position)\n\nRaises:\n ValueError: If project name is invalid",
"metrics": null,
"dependencies": [],
"children": []
},
{
"name": "_get_queue_position",
"type": "function",
"path": "/opt/server-agents/orchestrator/lib/queue_controller.py",
"line_number": 263,
"docstring": "Get queue position for a task.",
"metrics": null,
"dependencies": [],
"children": []
},
{
"name": "_has_capacity",
"type": "function",
"path": "/opt/server-agents/orchestrator/lib/queue_controller.py",
"line_number": 285,
"docstring": "Check if system has capacity for new task.",
"metrics": null,
"dependencies": [],
"children": []
},
{
"name": "_get_pending_tasks",
"type": "function",
"path": "/opt/server-agents/orchestrator/lib/queue_controller.py",
"line_number": 298,
"docstring": "Get all pending tasks sorted by priority and timestamp.",
"metrics": null,
"dependencies": [],
"children": []
},
{
"name": "_select_next_task",
"type": "function",
"path": "/opt/server-agents/orchestrator/lib/queue_controller.py",
"line_number": 318,
"docstring": "Fair share task selection across projects.",
"metrics": null,
"dependencies": [],
"children": []
},
{
"name": "_dispatch",
"type": "function",
"path": "/opt/server-agents/orchestrator/lib/queue_controller.py",
"line_number": 349,
"docstring": "Dispatch task to conductor and spawn container.\n\nUses atomic task claiming to prevent race conditions:\n1. Try to rename task file to .dispatching (atomic claim)\n2. If rename fails, another controller claimed it\n3. Only proceed with dispatch if claim succeeded\n\nReturns True if dispatch succeeded.",
"metrics": null,
"dependencies": [],
"children": []
},
{
"name": "_spawn_agent",
"type": "function",
"path": "/opt/server-agents/orchestrator/lib/queue_controller.py",
"line_number": 466,
"docstring": "Spawn Claude agent for the task using luzia infrastructure.\n\nReturns job_id if successful, None otherwise.",
"metrics": null,
"dependencies": [],
"children": []
},
{
"name": "run_loop",
"type": "function",
"path": "/opt/server-agents/orchestrator/lib/queue_controller.py",
"line_number": 536,
"docstring": "Main daemon loop - poll and dispatch.",
"metrics": null,
"dependencies": [],
"children": []
},
{
"name": "get_queue_status",
"type": "function",
"path": "/opt/server-agents/orchestrator/lib/queue_controller.py",
"line_number": 571,
"docstring": "Get queue status for display.",
"metrics": null,
"dependencies": [],
"children": []
},
{
"name": "clear_queue",
"type": "function",
"path": "/opt/server-agents/orchestrator/lib/queue_controller.py",
"line_number": 607,
"docstring": "Clear pending tasks. Returns count of cleared tasks.",
"metrics": null,
"dependencies": [],
"children": []
}
],
"imports": [
[
"fcntl",
""
],
[
"json",
""
],
[
"os",
""
],
[
"re",
""
],
[
"subprocess",
""
],
[
"time",
""
],
[
"uuid",
""
],
[
"datetime",
"datetime"
],
[
"Path",
"pathlib"
],
[
"Dict",
"typing"
],
[
"List",
"typing"
],
[
"Optional",
"typing"
],
[
"Tuple",
"typing"
],
[
"Any",
"typing"
],
[
"sys",
""
],
[
"subprocess",
""
],
[
"sys",
""
]
],
"patterns": []
},
"/opt/server-agents/orchestrator/lib/knowledge_graph.py": {
"path": "/opt/server-agents/orchestrator/lib/knowledge_graph.py",
"metrics": {
"total_lines": 643,
"code_lines": 483,
"comment_lines": 33,
"blank_lines": 127,
"functions": 21,
"classes": 1,
"imports": 14,
"cyclomatic_complexity": 32
},
"components": [
{
"name": "get_current_user",
"type": "function",
"path": "/opt/server-agents/orchestrator/lib/knowledge_graph.py",
"line_number": 65,
"docstring": "Get current username.",
"metrics": null,
"dependencies": [],
"children": []
},
{
"name": "get_user_groups",
"type": "function",
"path": "/opt/server-agents/orchestrator/lib/knowledge_graph.py",
"line_number": 70,
"docstring": "Get groups for a user.",
"metrics": null,
"dependencies": [],
"children": []
},
{
"name": "check_permission",
"type": "function",
"path": "/opt/server-agents/orchestrator/lib/knowledge_graph.py",
"line_number": 86,
"docstring": "Check if current user has permission for action on domain.\n\nArgs:\n domain: KG domain (sysadmin, users, projects, research)\n action: \"read\" or \"write\"\n\nReturns:\n True if permitted, False otherwise",
"metrics": null,
"dependencies": [],
"children": []
},
{
"name": "KnowledgeGraph",
"type": "class",
"path": "/opt/server-agents/orchestrator/lib/knowledge_graph.py",
"line_number": 124,
"docstring": "Knowledge graph operations for a single domain.",
"metrics": null,
"dependencies": [],
"children": []
},
{
"name": "__init__",
"type": "function",
"path": "/opt/server-agents/orchestrator/lib/knowledge_graph.py",
"line_number": 127,
"docstring": null,
"metrics": null,
"dependencies": [],
"children": []
},
{
"name": "_check_read",
"type": "function",
"path": "/opt/server-agents/orchestrator/lib/knowledge_graph.py",
"line_number": 136,
"docstring": "Check read permission.",
"metrics": null,
"dependencies": [],
"children": []
},
{
"name": "_check_write",
"type": "function",
"path": "/opt/server-agents/orchestrator/lib/knowledge_graph.py",
"line_number": 144,
"docstring": "Check write permission.",
"metrics": null,
"dependencies": [],
"children": []
},
{
"name": "_ensure_schema",
"type": "function",
"path": "/opt/server-agents/orchestrator/lib/knowledge_graph.py",
"line_number": 152,
"docstring": "Create tables if they don't exist.",
"metrics": null,
"dependencies": [],
"children": []
},
{
"name": "_connect",
"type": "function",
"path": "/opt/server-agents/orchestrator/lib/knowledge_graph.py",
"line_number": 244,
"docstring": null,
"metrics": null,
"dependencies": [],
"children": []
},
{
"name": "add_entity",
"type": "function",
"path": "/opt/server-agents/orchestrator/lib/knowledge_graph.py",
"line_number": 251,
"docstring": "Add or update an entity.",
"metrics": null,
"dependencies": [],
"children": []
},
{
"name": "get_entity",
"type": "function",
"path": "/opt/server-agents/orchestrator/lib/knowledge_graph.py",
"line_number": 288,
"docstring": "Get entity by name.",
"metrics": null,
"dependencies": [],
"children": []
},
{
"name": "get_entity_by_id",
"type": "function",
"path": "/opt/server-agents/orchestrator/lib/knowledge_graph.py",
"line_number": 314,
"docstring": "Get entity by ID.",
"metrics": null,
"dependencies": [],
"children": []
},
{
"name": "list_entities",
"type": "function",
"path": "/opt/server-agents/orchestrator/lib/knowledge_graph.py",
"line_number": 330,
"docstring": "List entities, optionally filtered by type.",
"metrics": null,
"dependencies": [],
"children": []
},
{
"name": "delete_entity",
"type": "function",
"path": "/opt/server-agents/orchestrator/lib/knowledge_graph.py",
"line_number": 352,
"docstring": "Delete entity and its relations/observations.",
"metrics": null,
"dependencies": [],
"children": []
},
{
"name": "search",
"type": "function",
"path": "/opt/server-agents/orchestrator/lib/knowledge_graph.py",
"line_number": 384,
"docstring": "Full-text search across entities.",
"metrics": null,
"dependencies": [],
"children": []
},
{
"name": "add_relation",
"type": "function",
"path": "/opt/server-agents/orchestrator/lib/knowledge_graph.py",
"line_number": 407,
"docstring": "Add relation between entities.",
"metrics": null,
"dependencies": [],
"children": []
},
{
"name": "get_relations",
"type": "function",
"path": "/opt/server-agents/orchestrator/lib/knowledge_graph.py",
"line_number": 440,
"docstring": "Get relations for an entity.",
"metrics": null,
"dependencies": [],
"children": []
},
{
"name": "add_observation",
"type": "function",
"path": "/opt/server-agents/orchestrator/lib/knowledge_graph.py",
"line_number": 486,
"docstring": "Add observation to an entity.",
"metrics": null,
"dependencies": [],
"children": []
},
{
"name": "get_observations",
"type": "function",
"path": "/opt/server-agents/orchestrator/lib/knowledge_graph.py",
"line_number": 511,
"docstring": "Get observations for an entity.",
"metrics": null,
"dependencies": [],
"children": []
},
{
"name": "stats",
"type": "function",
"path": "/opt/server-agents/orchestrator/lib/knowledge_graph.py",
"line_number": 536,
"docstring": "Get KG statistics.",
"metrics": null,
"dependencies": [],
"children": []
},
{
"name": "search_all",
"type": "function",
"path": "/opt/server-agents/orchestrator/lib/knowledge_graph.py",
"line_number": 566,
"docstring": "Search across all knowledge graphs.",
"metrics": null,
"dependencies": [],
"children": []
},
{
"name": "get_all_stats",
"type": "function",
"path": "/opt/server-agents/orchestrator/lib/knowledge_graph.py",
"line_number": 578,
"docstring": "Get stats from all knowledge graphs.",
"metrics": null,
"dependencies": [],
"children": []
}
],
"imports": [
[
"json",
""
],
[
"sqlite3",
""
],
[
"uuid",
""
],
[
"time",
""
],
[
"os",
""
],
[
"grp",
""
],
[
"pwd",
""
],
[
"Path",
"pathlib"
],
[
"Optional",
"typing"
],
[
"Dict",
"typing"
],
[
"List",
"typing"
],
[
"Any",
"typing"
],
[
"datetime",
"datetime"
],
[
"sys",
""
]
],
"patterns": []
}
},
"summary": {
"total_lines": 4044,
"code_lines": 3115,
"comment_lines": 206,
"blank_lines": 723,
"functions": 149,
"classes": 16,
"imports": 133,
"cyclomatic_complexity": 0
}
},
"dependency_graph": {},
"patterns": {
"singleton": [],
"factory": [],
"observer": [],
"adapter": [],
"decorator": [],
"context_manager": [],
"dataclass": []
},
"insights": {
"complexity_assessment": {
"level": "low",
"cyclomatic_complexity": 0,
"functions": 149,
"average_complexity_per_function": 0.0,
"assessment": "Average cyclomatic complexity of 0.0 per function"
},
"code_quality_metrics": {
"code_ratio": 77.03,
"comment_ratio": 6.61,
"blank_ratio": 17.88,
"total_lines": 4044,
"assessment": "Needs more documentation"
},
"hotspots": [],
"recommendations": [
"Increase code documentation - aim for 10%+ comment ratio"
]
}
}