amd-gaia 0.15.0__py3-none-any.whl → 0.15.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.
- {amd_gaia-0.15.0.dist-info → amd_gaia-0.15.2.dist-info}/METADATA +222 -223
- amd_gaia-0.15.2.dist-info/RECORD +182 -0
- {amd_gaia-0.15.0.dist-info → amd_gaia-0.15.2.dist-info}/WHEEL +1 -1
- {amd_gaia-0.15.0.dist-info → amd_gaia-0.15.2.dist-info}/entry_points.txt +1 -0
- {amd_gaia-0.15.0.dist-info → amd_gaia-0.15.2.dist-info}/licenses/LICENSE.md +20 -20
- gaia/__init__.py +29 -29
- gaia/agents/__init__.py +19 -19
- gaia/agents/base/__init__.py +9 -9
- gaia/agents/base/agent.py +2132 -2177
- gaia/agents/base/api_agent.py +119 -120
- gaia/agents/base/console.py +1967 -1841
- gaia/agents/base/errors.py +237 -237
- gaia/agents/base/mcp_agent.py +86 -86
- gaia/agents/base/tools.py +88 -83
- gaia/agents/blender/__init__.py +7 -0
- gaia/agents/blender/agent.py +553 -556
- gaia/agents/blender/agent_simple.py +133 -135
- gaia/agents/blender/app.py +211 -211
- gaia/agents/blender/app_simple.py +41 -41
- gaia/agents/blender/core/__init__.py +16 -16
- gaia/agents/blender/core/materials.py +506 -506
- gaia/agents/blender/core/objects.py +316 -316
- gaia/agents/blender/core/rendering.py +225 -225
- gaia/agents/blender/core/scene.py +220 -220
- gaia/agents/blender/core/view.py +146 -146
- gaia/agents/chat/__init__.py +9 -9
- gaia/agents/chat/agent.py +809 -835
- gaia/agents/chat/app.py +1065 -1058
- gaia/agents/chat/session.py +508 -508
- gaia/agents/chat/tools/__init__.py +15 -15
- gaia/agents/chat/tools/file_tools.py +96 -96
- gaia/agents/chat/tools/rag_tools.py +1744 -1729
- gaia/agents/chat/tools/shell_tools.py +437 -436
- gaia/agents/code/__init__.py +7 -7
- gaia/agents/code/agent.py +549 -549
- gaia/agents/code/cli.py +377 -0
- gaia/agents/code/models.py +135 -135
- gaia/agents/code/orchestration/__init__.py +24 -24
- gaia/agents/code/orchestration/checklist_executor.py +1763 -1763
- gaia/agents/code/orchestration/checklist_generator.py +713 -713
- gaia/agents/code/orchestration/factories/__init__.py +9 -9
- gaia/agents/code/orchestration/factories/base.py +63 -63
- gaia/agents/code/orchestration/factories/nextjs_factory.py +118 -118
- gaia/agents/code/orchestration/factories/python_factory.py +106 -106
- gaia/agents/code/orchestration/orchestrator.py +841 -841
- gaia/agents/code/orchestration/project_analyzer.py +391 -391
- gaia/agents/code/orchestration/steps/__init__.py +67 -67
- gaia/agents/code/orchestration/steps/base.py +188 -188
- gaia/agents/code/orchestration/steps/error_handler.py +314 -314
- gaia/agents/code/orchestration/steps/nextjs.py +828 -828
- gaia/agents/code/orchestration/steps/python.py +307 -307
- gaia/agents/code/orchestration/template_catalog.py +469 -469
- gaia/agents/code/orchestration/workflows/__init__.py +14 -14
- gaia/agents/code/orchestration/workflows/base.py +80 -80
- gaia/agents/code/orchestration/workflows/nextjs.py +186 -186
- gaia/agents/code/orchestration/workflows/python.py +94 -94
- gaia/agents/code/prompts/__init__.py +11 -11
- gaia/agents/code/prompts/base_prompt.py +77 -77
- gaia/agents/code/prompts/code_patterns.py +2034 -2036
- gaia/agents/code/prompts/nextjs_prompt.py +40 -40
- gaia/agents/code/prompts/python_prompt.py +109 -109
- gaia/agents/code/schema_inference.py +365 -365
- gaia/agents/code/system_prompt.py +41 -41
- gaia/agents/code/tools/__init__.py +42 -42
- gaia/agents/code/tools/cli_tools.py +1138 -1138
- gaia/agents/code/tools/code_formatting.py +319 -319
- gaia/agents/code/tools/code_tools.py +769 -769
- gaia/agents/code/tools/error_fixing.py +1347 -1347
- gaia/agents/code/tools/external_tools.py +180 -180
- gaia/agents/code/tools/file_io.py +845 -845
- gaia/agents/code/tools/prisma_tools.py +190 -190
- gaia/agents/code/tools/project_management.py +1016 -1016
- gaia/agents/code/tools/testing.py +321 -321
- gaia/agents/code/tools/typescript_tools.py +122 -122
- gaia/agents/code/tools/validation_parsing.py +461 -461
- gaia/agents/code/tools/validation_tools.py +806 -806
- gaia/agents/code/tools/web_dev_tools.py +1758 -1758
- gaia/agents/code/validators/__init__.py +16 -16
- gaia/agents/code/validators/antipattern_checker.py +241 -241
- gaia/agents/code/validators/ast_analyzer.py +197 -197
- gaia/agents/code/validators/requirements_validator.py +145 -145
- gaia/agents/code/validators/syntax_validator.py +171 -171
- gaia/agents/docker/__init__.py +7 -7
- gaia/agents/docker/agent.py +643 -642
- gaia/agents/emr/__init__.py +8 -8
- gaia/agents/emr/agent.py +1504 -1506
- gaia/agents/emr/cli.py +1322 -1322
- gaia/agents/emr/constants.py +475 -475
- gaia/agents/emr/dashboard/__init__.py +4 -4
- gaia/agents/emr/dashboard/server.py +1972 -1974
- gaia/agents/jira/__init__.py +11 -11
- gaia/agents/jira/agent.py +894 -894
- gaia/agents/jira/jql_templates.py +299 -299
- gaia/agents/routing/__init__.py +7 -7
- gaia/agents/routing/agent.py +567 -570
- gaia/agents/routing/system_prompt.py +75 -75
- gaia/agents/summarize/__init__.py +11 -0
- gaia/agents/summarize/agent.py +885 -0
- gaia/agents/summarize/prompts.py +129 -0
- gaia/api/__init__.py +23 -23
- gaia/api/agent_registry.py +238 -238
- gaia/api/app.py +305 -305
- gaia/api/openai_server.py +575 -575
- gaia/api/schemas.py +186 -186
- gaia/api/sse_handler.py +373 -373
- gaia/apps/__init__.py +4 -4
- gaia/apps/llm/__init__.py +6 -6
- gaia/apps/llm/app.py +184 -169
- gaia/apps/summarize/app.py +116 -633
- gaia/apps/summarize/html_viewer.py +133 -133
- gaia/apps/summarize/pdf_formatter.py +284 -284
- gaia/audio/__init__.py +2 -2
- gaia/audio/audio_client.py +439 -439
- gaia/audio/audio_recorder.py +269 -269
- gaia/audio/kokoro_tts.py +599 -599
- gaia/audio/whisper_asr.py +432 -432
- gaia/chat/__init__.py +16 -16
- gaia/chat/app.py +428 -430
- gaia/chat/prompts.py +522 -522
- gaia/chat/sdk.py +1228 -1225
- gaia/cli.py +5659 -5632
- gaia/database/__init__.py +10 -10
- gaia/database/agent.py +176 -176
- gaia/database/mixin.py +290 -290
- gaia/database/testing.py +64 -64
- gaia/eval/batch_experiment.py +2332 -2332
- gaia/eval/claude.py +542 -542
- gaia/eval/config.py +37 -37
- gaia/eval/email_generator.py +512 -512
- gaia/eval/eval.py +3179 -3179
- gaia/eval/groundtruth.py +1130 -1130
- gaia/eval/transcript_generator.py +582 -582
- gaia/eval/webapp/README.md +167 -167
- gaia/eval/webapp/package-lock.json +875 -875
- gaia/eval/webapp/package.json +20 -20
- gaia/eval/webapp/public/app.js +3402 -3402
- gaia/eval/webapp/public/index.html +87 -87
- gaia/eval/webapp/public/styles.css +3661 -3661
- gaia/eval/webapp/server.js +415 -415
- gaia/eval/webapp/test-setup.js +72 -72
- gaia/installer/__init__.py +23 -0
- gaia/installer/init_command.py +1275 -0
- gaia/installer/lemonade_installer.py +619 -0
- gaia/llm/__init__.py +10 -2
- gaia/llm/base_client.py +60 -0
- gaia/llm/exceptions.py +12 -0
- gaia/llm/factory.py +70 -0
- gaia/llm/lemonade_client.py +3421 -3221
- gaia/llm/lemonade_manager.py +294 -294
- gaia/llm/providers/__init__.py +9 -0
- gaia/llm/providers/claude.py +108 -0
- gaia/llm/providers/lemonade.py +118 -0
- gaia/llm/providers/openai_provider.py +79 -0
- gaia/llm/vlm_client.py +382 -382
- gaia/logger.py +189 -189
- gaia/mcp/agent_mcp_server.py +245 -245
- gaia/mcp/blender_mcp_client.py +138 -138
- gaia/mcp/blender_mcp_server.py +648 -648
- gaia/mcp/context7_cache.py +332 -332
- gaia/mcp/external_services.py +518 -518
- gaia/mcp/mcp_bridge.py +811 -550
- gaia/mcp/servers/__init__.py +6 -6
- gaia/mcp/servers/docker_mcp.py +83 -83
- gaia/perf_analysis.py +361 -0
- gaia/rag/__init__.py +10 -10
- gaia/rag/app.py +293 -293
- gaia/rag/demo.py +304 -304
- gaia/rag/pdf_utils.py +235 -235
- gaia/rag/sdk.py +2194 -2194
- gaia/security.py +183 -163
- gaia/talk/app.py +287 -289
- gaia/talk/sdk.py +538 -538
- gaia/testing/__init__.py +87 -87
- gaia/testing/assertions.py +330 -330
- gaia/testing/fixtures.py +333 -333
- gaia/testing/mocks.py +493 -493
- gaia/util.py +46 -46
- gaia/utils/__init__.py +33 -33
- gaia/utils/file_watcher.py +675 -675
- gaia/utils/parsing.py +223 -223
- gaia/version.py +100 -100
- amd_gaia-0.15.0.dist-info/RECORD +0 -168
- gaia/agents/code/app.py +0 -266
- gaia/llm/llm_client.py +0 -723
- {amd_gaia-0.15.0.dist-info → amd_gaia-0.15.2.dist-info}/top_level.txt +0 -0
|
@@ -1,133 +1,133 @@
|
|
|
1
|
-
#!/usr/bin/env python3
|
|
2
|
-
# Copyright(C) 2024-2025 Advanced Micro Devices, Inc. All rights reserved.
|
|
3
|
-
# SPDX-License-Identifier: MIT
|
|
4
|
-
|
|
5
|
-
"""
|
|
6
|
-
HTML Viewer for summarizer JSON output
|
|
7
|
-
"""
|
|
8
|
-
|
|
9
|
-
import json
|
|
10
|
-
import webbrowser
|
|
11
|
-
from pathlib import Path
|
|
12
|
-
from typing import Any, Dict
|
|
13
|
-
|
|
14
|
-
# Template path - will be loaded from file
|
|
15
|
-
TEMPLATE_PATH = Path(__file__).parent / "templates" / "summary_report.html"
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
class HTMLViewer:
|
|
19
|
-
"""Generate and open HTML viewer for summary JSON"""
|
|
20
|
-
|
|
21
|
-
@staticmethod
|
|
22
|
-
def create_viewer(
|
|
23
|
-
json_data: Dict[str, Any], json_path: Path, html_path: Path = None
|
|
24
|
-
) -> Path:
|
|
25
|
-
"""
|
|
26
|
-
Create an HTML viewer for the summary JSON
|
|
27
|
-
|
|
28
|
-
Args:
|
|
29
|
-
json_data: The summary JSON data
|
|
30
|
-
json_path: Path to the JSON file (for display in HTML)
|
|
31
|
-
html_path: Path where to save the HTML file (optional, defaults to json_path with .html extension)
|
|
32
|
-
|
|
33
|
-
Returns:
|
|
34
|
-
Path to the created HTML file
|
|
35
|
-
"""
|
|
36
|
-
# Ensure json_path is a Path object
|
|
37
|
-
if isinstance(json_path, str):
|
|
38
|
-
json_path = Path(json_path)
|
|
39
|
-
|
|
40
|
-
# Determine HTML path if not provided
|
|
41
|
-
if html_path is None:
|
|
42
|
-
html_path = json_path.with_suffix(".html")
|
|
43
|
-
elif isinstance(html_path, str):
|
|
44
|
-
html_path = Path(html_path)
|
|
45
|
-
|
|
46
|
-
# Load template from file
|
|
47
|
-
if not TEMPLATE_PATH.exists():
|
|
48
|
-
raise FileNotFoundError(f"HTML template not found: {TEMPLATE_PATH}")
|
|
49
|
-
|
|
50
|
-
html_template = TEMPLATE_PATH.read_text(encoding="utf-8")
|
|
51
|
-
|
|
52
|
-
# Convert JSON to string with proper escaping
|
|
53
|
-
json_str = json.dumps(json_data, indent=2)
|
|
54
|
-
|
|
55
|
-
# Replace the placeholder with actual JSON data
|
|
56
|
-
html_content = html_template.replace("{{JSON_DATA}}", json_str)
|
|
57
|
-
|
|
58
|
-
# Add a script to set the JSON file path for display (use JSON path, not HTML path)
|
|
59
|
-
json_absolute_path = json_path.resolve()
|
|
60
|
-
# Escape backslashes for JavaScript string
|
|
61
|
-
json_absolute_path_escaped = str(json_absolute_path).replace("\\", "\\\\")
|
|
62
|
-
json_path_script = f"""
|
|
63
|
-
<script>
|
|
64
|
-
window.jsonFilePath = '{json_absolute_path_escaped}';
|
|
65
|
-
</script>
|
|
66
|
-
</head>"""
|
|
67
|
-
html_content = html_content.replace("</head>", json_path_script)
|
|
68
|
-
|
|
69
|
-
# Write HTML file
|
|
70
|
-
html_path.write_text(html_content, encoding="utf-8")
|
|
71
|
-
|
|
72
|
-
return html_path
|
|
73
|
-
|
|
74
|
-
@staticmethod
|
|
75
|
-
def open_viewer(html_path: Path, auto_open: bool = True) -> bool:
|
|
76
|
-
"""
|
|
77
|
-
Open the HTML viewer in the default browser
|
|
78
|
-
|
|
79
|
-
Args:
|
|
80
|
-
html_path: Path to the HTML file
|
|
81
|
-
auto_open: Whether to automatically open the browser
|
|
82
|
-
|
|
83
|
-
Returns:
|
|
84
|
-
True if successfully opened, False otherwise
|
|
85
|
-
"""
|
|
86
|
-
if not auto_open:
|
|
87
|
-
return False
|
|
88
|
-
|
|
89
|
-
# Ensure html_path is a Path object
|
|
90
|
-
if isinstance(html_path, str):
|
|
91
|
-
html_path = Path(html_path)
|
|
92
|
-
|
|
93
|
-
try:
|
|
94
|
-
# Use file:// protocol for local files
|
|
95
|
-
file_url = html_path.absolute().as_uri()
|
|
96
|
-
|
|
97
|
-
# Open in default browser
|
|
98
|
-
webbrowser.open(file_url)
|
|
99
|
-
return True
|
|
100
|
-
|
|
101
|
-
except Exception as e:
|
|
102
|
-
print(f"⚠️ Could not open browser automatically: {e}")
|
|
103
|
-
print(f" You can manually open: {html_path}")
|
|
104
|
-
return False
|
|
105
|
-
|
|
106
|
-
@staticmethod
|
|
107
|
-
def create_and_open(
|
|
108
|
-
json_data: Dict[str, Any], json_path: Path, auto_open: bool = True
|
|
109
|
-
) -> Path:
|
|
110
|
-
"""
|
|
111
|
-
Create HTML viewer and optionally open it
|
|
112
|
-
|
|
113
|
-
Args:
|
|
114
|
-
json_data: The summary JSON data
|
|
115
|
-
json_path: Path to the JSON file
|
|
116
|
-
auto_open: Whether to automatically open the browser
|
|
117
|
-
|
|
118
|
-
Returns:
|
|
119
|
-
Path to the created HTML file
|
|
120
|
-
"""
|
|
121
|
-
# Ensure json_path is a Path object
|
|
122
|
-
if isinstance(json_path, str):
|
|
123
|
-
json_path = Path(json_path)
|
|
124
|
-
|
|
125
|
-
# Create HTML file with same name as JSON
|
|
126
|
-
html_path = json_path.with_suffix(".html")
|
|
127
|
-
html_path = HTMLViewer.create_viewer(json_data, json_path, html_path)
|
|
128
|
-
|
|
129
|
-
# Open if requested
|
|
130
|
-
if auto_open:
|
|
131
|
-
HTMLViewer.open_viewer(html_path, auto_open=True)
|
|
132
|
-
|
|
133
|
-
return html_path
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
# Copyright(C) 2024-2025 Advanced Micro Devices, Inc. All rights reserved.
|
|
3
|
+
# SPDX-License-Identifier: MIT
|
|
4
|
+
|
|
5
|
+
"""
|
|
6
|
+
HTML Viewer for summarizer JSON output
|
|
7
|
+
"""
|
|
8
|
+
|
|
9
|
+
import json
|
|
10
|
+
import webbrowser
|
|
11
|
+
from pathlib import Path
|
|
12
|
+
from typing import Any, Dict
|
|
13
|
+
|
|
14
|
+
# Template path - will be loaded from file
|
|
15
|
+
TEMPLATE_PATH = Path(__file__).parent / "templates" / "summary_report.html"
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
class HTMLViewer:
|
|
19
|
+
"""Generate and open HTML viewer for summary JSON"""
|
|
20
|
+
|
|
21
|
+
@staticmethod
|
|
22
|
+
def create_viewer(
|
|
23
|
+
json_data: Dict[str, Any], json_path: Path, html_path: Path = None
|
|
24
|
+
) -> Path:
|
|
25
|
+
"""
|
|
26
|
+
Create an HTML viewer for the summary JSON
|
|
27
|
+
|
|
28
|
+
Args:
|
|
29
|
+
json_data: The summary JSON data
|
|
30
|
+
json_path: Path to the JSON file (for display in HTML)
|
|
31
|
+
html_path: Path where to save the HTML file (optional, defaults to json_path with .html extension)
|
|
32
|
+
|
|
33
|
+
Returns:
|
|
34
|
+
Path to the created HTML file
|
|
35
|
+
"""
|
|
36
|
+
# Ensure json_path is a Path object
|
|
37
|
+
if isinstance(json_path, str):
|
|
38
|
+
json_path = Path(json_path)
|
|
39
|
+
|
|
40
|
+
# Determine HTML path if not provided
|
|
41
|
+
if html_path is None:
|
|
42
|
+
html_path = json_path.with_suffix(".html")
|
|
43
|
+
elif isinstance(html_path, str):
|
|
44
|
+
html_path = Path(html_path)
|
|
45
|
+
|
|
46
|
+
# Load template from file
|
|
47
|
+
if not TEMPLATE_PATH.exists():
|
|
48
|
+
raise FileNotFoundError(f"HTML template not found: {TEMPLATE_PATH}")
|
|
49
|
+
|
|
50
|
+
html_template = TEMPLATE_PATH.read_text(encoding="utf-8")
|
|
51
|
+
|
|
52
|
+
# Convert JSON to string with proper escaping
|
|
53
|
+
json_str = json.dumps(json_data, indent=2)
|
|
54
|
+
|
|
55
|
+
# Replace the placeholder with actual JSON data
|
|
56
|
+
html_content = html_template.replace("{{JSON_DATA}}", json_str)
|
|
57
|
+
|
|
58
|
+
# Add a script to set the JSON file path for display (use JSON path, not HTML path)
|
|
59
|
+
json_absolute_path = json_path.resolve()
|
|
60
|
+
# Escape backslashes for JavaScript string
|
|
61
|
+
json_absolute_path_escaped = str(json_absolute_path).replace("\\", "\\\\")
|
|
62
|
+
json_path_script = f"""
|
|
63
|
+
<script>
|
|
64
|
+
window.jsonFilePath = '{json_absolute_path_escaped}';
|
|
65
|
+
</script>
|
|
66
|
+
</head>"""
|
|
67
|
+
html_content = html_content.replace("</head>", json_path_script)
|
|
68
|
+
|
|
69
|
+
# Write HTML file
|
|
70
|
+
html_path.write_text(html_content, encoding="utf-8")
|
|
71
|
+
|
|
72
|
+
return html_path
|
|
73
|
+
|
|
74
|
+
@staticmethod
|
|
75
|
+
def open_viewer(html_path: Path, auto_open: bool = True) -> bool:
|
|
76
|
+
"""
|
|
77
|
+
Open the HTML viewer in the default browser
|
|
78
|
+
|
|
79
|
+
Args:
|
|
80
|
+
html_path: Path to the HTML file
|
|
81
|
+
auto_open: Whether to automatically open the browser
|
|
82
|
+
|
|
83
|
+
Returns:
|
|
84
|
+
True if successfully opened, False otherwise
|
|
85
|
+
"""
|
|
86
|
+
if not auto_open:
|
|
87
|
+
return False
|
|
88
|
+
|
|
89
|
+
# Ensure html_path is a Path object
|
|
90
|
+
if isinstance(html_path, str):
|
|
91
|
+
html_path = Path(html_path)
|
|
92
|
+
|
|
93
|
+
try:
|
|
94
|
+
# Use file:// protocol for local files
|
|
95
|
+
file_url = html_path.absolute().as_uri()
|
|
96
|
+
|
|
97
|
+
# Open in default browser
|
|
98
|
+
webbrowser.open(file_url)
|
|
99
|
+
return True
|
|
100
|
+
|
|
101
|
+
except Exception as e:
|
|
102
|
+
print(f"⚠️ Could not open browser automatically: {e}")
|
|
103
|
+
print(f" You can manually open: {html_path}")
|
|
104
|
+
return False
|
|
105
|
+
|
|
106
|
+
@staticmethod
|
|
107
|
+
def create_and_open(
|
|
108
|
+
json_data: Dict[str, Any], json_path: Path, auto_open: bool = True
|
|
109
|
+
) -> Path:
|
|
110
|
+
"""
|
|
111
|
+
Create HTML viewer and optionally open it
|
|
112
|
+
|
|
113
|
+
Args:
|
|
114
|
+
json_data: The summary JSON data
|
|
115
|
+
json_path: Path to the JSON file
|
|
116
|
+
auto_open: Whether to automatically open the browser
|
|
117
|
+
|
|
118
|
+
Returns:
|
|
119
|
+
Path to the created HTML file
|
|
120
|
+
"""
|
|
121
|
+
# Ensure json_path is a Path object
|
|
122
|
+
if isinstance(json_path, str):
|
|
123
|
+
json_path = Path(json_path)
|
|
124
|
+
|
|
125
|
+
# Create HTML file with same name as JSON
|
|
126
|
+
html_path = json_path.with_suffix(".html")
|
|
127
|
+
html_path = HTMLViewer.create_viewer(json_data, json_path, html_path)
|
|
128
|
+
|
|
129
|
+
# Open if requested
|
|
130
|
+
if auto_open:
|
|
131
|
+
HTMLViewer.open_viewer(html_path, auto_open=True)
|
|
132
|
+
|
|
133
|
+
return html_path
|