amd-gaia 0.14.3__py3-none-any.whl → 0.15.1__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.14.3.dist-info → amd_gaia-0.15.1.dist-info}/METADATA +223 -223
- amd_gaia-0.15.1.dist-info/RECORD +178 -0
- {amd_gaia-0.14.3.dist-info → amd_gaia-0.15.1.dist-info}/entry_points.txt +1 -0
- {amd_gaia-0.14.3.dist-info → amd_gaia-0.15.1.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 +2177 -2177
- gaia/agents/base/api_agent.py +120 -120
- gaia/agents/base/console.py +1841 -1841
- gaia/agents/base/errors.py +237 -237
- gaia/agents/base/mcp_agent.py +86 -86
- gaia/agents/base/tools.py +83 -83
- gaia/agents/blender/agent.py +556 -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 +835 -835
- gaia/agents/chat/app.py +1058 -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 +1729 -1729
- gaia/agents/chat/tools/shell_tools.py +436 -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 +2036 -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 +642 -642
- gaia/agents/emr/__init__.py +8 -8
- gaia/agents/emr/agent.py +1506 -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 +1974 -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 +173 -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 +430 -430
- gaia/chat/prompts.py +522 -522
- gaia/chat/sdk.py +1228 -1225
- gaia/cli.py +5481 -5621
- 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/llm/__init__.py +9 -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 +3236 -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 +120 -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 +163 -163
- gaia/talk/app.py +289 -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.14.3.dist-info/RECORD +0 -168
- gaia/agents/code/app.py +0 -266
- gaia/llm/llm_client.py +0 -729
- {amd_gaia-0.14.3.dist-info → amd_gaia-0.15.1.dist-info}/WHEEL +0 -0
- {amd_gaia-0.14.3.dist-info → amd_gaia-0.15.1.dist-info}/top_level.txt +0 -0
|
@@ -1,94 +1,94 @@
|
|
|
1
|
-
# Copyright(C) 2025-2026 Advanced Micro Devices, Inc. All rights reserved.
|
|
2
|
-
# SPDX-License-Identifier: MIT
|
|
3
|
-
"""
|
|
4
|
-
Python workflow definition.
|
|
5
|
-
|
|
6
|
-
Defines the phases and steps for building Python applications.
|
|
7
|
-
"""
|
|
8
|
-
|
|
9
|
-
from typing import List
|
|
10
|
-
|
|
11
|
-
from ..steps.base import UserContext
|
|
12
|
-
from ..steps.python import (
|
|
13
|
-
AnalyzePylintStep,
|
|
14
|
-
AutoFixSyntaxStep,
|
|
15
|
-
CreateProjectStep,
|
|
16
|
-
FixLintingStep,
|
|
17
|
-
ListFilesStep,
|
|
18
|
-
RunPytestStep,
|
|
19
|
-
ValidateProjectStep,
|
|
20
|
-
)
|
|
21
|
-
from .base import WorkflowPhase
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
def create_python_workflow(context: UserContext) -> List[WorkflowPhase]:
|
|
25
|
-
"""Create the Python development workflow phases.
|
|
26
|
-
|
|
27
|
-
Args:
|
|
28
|
-
context: User context with request details
|
|
29
|
-
|
|
30
|
-
Returns:
|
|
31
|
-
List of workflow phases
|
|
32
|
-
"""
|
|
33
|
-
# Phase 1: Project Creation
|
|
34
|
-
creation_phase = WorkflowPhase(
|
|
35
|
-
name="creation",
|
|
36
|
-
description="Create Python project structure",
|
|
37
|
-
steps=[
|
|
38
|
-
CreateProjectStep(
|
|
39
|
-
name="create_project",
|
|
40
|
-
description="Generate project files",
|
|
41
|
-
user_request=context.user_request,
|
|
42
|
-
),
|
|
43
|
-
ListFilesStep(
|
|
44
|
-
name="list_files",
|
|
45
|
-
description="Discover created files",
|
|
46
|
-
),
|
|
47
|
-
],
|
|
48
|
-
)
|
|
49
|
-
|
|
50
|
-
# Phase 2: Validation
|
|
51
|
-
validation_phase = WorkflowPhase(
|
|
52
|
-
name="validation",
|
|
53
|
-
description="Validate and fix project",
|
|
54
|
-
steps=[
|
|
55
|
-
ValidateProjectStep(
|
|
56
|
-
name="validate_project",
|
|
57
|
-
description="Check project structure",
|
|
58
|
-
),
|
|
59
|
-
AutoFixSyntaxStep(
|
|
60
|
-
name="auto_fix_syntax",
|
|
61
|
-
description="Fix syntax errors",
|
|
62
|
-
),
|
|
63
|
-
],
|
|
64
|
-
)
|
|
65
|
-
|
|
66
|
-
# Phase 3: Code Quality
|
|
67
|
-
quality_phase = WorkflowPhase(
|
|
68
|
-
name="quality",
|
|
69
|
-
description="Lint and format code",
|
|
70
|
-
steps=[
|
|
71
|
-
AnalyzePylintStep(
|
|
72
|
-
name="analyze_pylint",
|
|
73
|
-
description="Run pylint analysis",
|
|
74
|
-
),
|
|
75
|
-
FixLintingStep(
|
|
76
|
-
name="fix_linting",
|
|
77
|
-
description="Fix linting issues",
|
|
78
|
-
),
|
|
79
|
-
],
|
|
80
|
-
)
|
|
81
|
-
|
|
82
|
-
# Phase 4: Testing
|
|
83
|
-
testing_phase = WorkflowPhase(
|
|
84
|
-
name="testing",
|
|
85
|
-
description="Run tests",
|
|
86
|
-
steps=[
|
|
87
|
-
RunPytestStep(
|
|
88
|
-
name="run_tests",
|
|
89
|
-
description="Run pytest",
|
|
90
|
-
),
|
|
91
|
-
],
|
|
92
|
-
)
|
|
93
|
-
|
|
94
|
-
return [creation_phase, validation_phase, quality_phase, testing_phase]
|
|
1
|
+
# Copyright(C) 2025-2026 Advanced Micro Devices, Inc. All rights reserved.
|
|
2
|
+
# SPDX-License-Identifier: MIT
|
|
3
|
+
"""
|
|
4
|
+
Python workflow definition.
|
|
5
|
+
|
|
6
|
+
Defines the phases and steps for building Python applications.
|
|
7
|
+
"""
|
|
8
|
+
|
|
9
|
+
from typing import List
|
|
10
|
+
|
|
11
|
+
from ..steps.base import UserContext
|
|
12
|
+
from ..steps.python import (
|
|
13
|
+
AnalyzePylintStep,
|
|
14
|
+
AutoFixSyntaxStep,
|
|
15
|
+
CreateProjectStep,
|
|
16
|
+
FixLintingStep,
|
|
17
|
+
ListFilesStep,
|
|
18
|
+
RunPytestStep,
|
|
19
|
+
ValidateProjectStep,
|
|
20
|
+
)
|
|
21
|
+
from .base import WorkflowPhase
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
def create_python_workflow(context: UserContext) -> List[WorkflowPhase]:
|
|
25
|
+
"""Create the Python development workflow phases.
|
|
26
|
+
|
|
27
|
+
Args:
|
|
28
|
+
context: User context with request details
|
|
29
|
+
|
|
30
|
+
Returns:
|
|
31
|
+
List of workflow phases
|
|
32
|
+
"""
|
|
33
|
+
# Phase 1: Project Creation
|
|
34
|
+
creation_phase = WorkflowPhase(
|
|
35
|
+
name="creation",
|
|
36
|
+
description="Create Python project structure",
|
|
37
|
+
steps=[
|
|
38
|
+
CreateProjectStep(
|
|
39
|
+
name="create_project",
|
|
40
|
+
description="Generate project files",
|
|
41
|
+
user_request=context.user_request,
|
|
42
|
+
),
|
|
43
|
+
ListFilesStep(
|
|
44
|
+
name="list_files",
|
|
45
|
+
description="Discover created files",
|
|
46
|
+
),
|
|
47
|
+
],
|
|
48
|
+
)
|
|
49
|
+
|
|
50
|
+
# Phase 2: Validation
|
|
51
|
+
validation_phase = WorkflowPhase(
|
|
52
|
+
name="validation",
|
|
53
|
+
description="Validate and fix project",
|
|
54
|
+
steps=[
|
|
55
|
+
ValidateProjectStep(
|
|
56
|
+
name="validate_project",
|
|
57
|
+
description="Check project structure",
|
|
58
|
+
),
|
|
59
|
+
AutoFixSyntaxStep(
|
|
60
|
+
name="auto_fix_syntax",
|
|
61
|
+
description="Fix syntax errors",
|
|
62
|
+
),
|
|
63
|
+
],
|
|
64
|
+
)
|
|
65
|
+
|
|
66
|
+
# Phase 3: Code Quality
|
|
67
|
+
quality_phase = WorkflowPhase(
|
|
68
|
+
name="quality",
|
|
69
|
+
description="Lint and format code",
|
|
70
|
+
steps=[
|
|
71
|
+
AnalyzePylintStep(
|
|
72
|
+
name="analyze_pylint",
|
|
73
|
+
description="Run pylint analysis",
|
|
74
|
+
),
|
|
75
|
+
FixLintingStep(
|
|
76
|
+
name="fix_linting",
|
|
77
|
+
description="Fix linting issues",
|
|
78
|
+
),
|
|
79
|
+
],
|
|
80
|
+
)
|
|
81
|
+
|
|
82
|
+
# Phase 4: Testing
|
|
83
|
+
testing_phase = WorkflowPhase(
|
|
84
|
+
name="testing",
|
|
85
|
+
description="Run tests",
|
|
86
|
+
steps=[
|
|
87
|
+
RunPytestStep(
|
|
88
|
+
name="run_tests",
|
|
89
|
+
description="Run pytest",
|
|
90
|
+
),
|
|
91
|
+
],
|
|
92
|
+
)
|
|
93
|
+
|
|
94
|
+
return [creation_phase, validation_phase, quality_phase, testing_phase]
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
# Copyright(C) 2025-2026 Advanced Micro Devices, Inc. All rights reserved.
|
|
2
|
-
# SPDX-License-Identifier: MIT
|
|
3
|
-
"""Language-specific prompt modules for Code Agent."""
|
|
4
|
-
|
|
5
|
-
from .nextjs_prompt import NEXTJS_PROMPT
|
|
6
|
-
from .python_prompt import get_python_prompt
|
|
7
|
-
|
|
8
|
-
__all__ = [
|
|
9
|
-
"get_python_prompt",
|
|
10
|
-
"NEXTJS_PROMPT",
|
|
11
|
-
]
|
|
1
|
+
# Copyright(C) 2025-2026 Advanced Micro Devices, Inc. All rights reserved.
|
|
2
|
+
# SPDX-License-Identifier: MIT
|
|
3
|
+
"""Language-specific prompt modules for Code Agent."""
|
|
4
|
+
|
|
5
|
+
from .nextjs_prompt import NEXTJS_PROMPT
|
|
6
|
+
from .python_prompt import get_python_prompt
|
|
7
|
+
|
|
8
|
+
__all__ = [
|
|
9
|
+
"get_python_prompt",
|
|
10
|
+
"NEXTJS_PROMPT",
|
|
11
|
+
]
|
|
@@ -1,77 +1,77 @@
|
|
|
1
|
-
# Copyright(C) 2025-2026 Advanced Micro Devices, Inc. All rights reserved.
|
|
2
|
-
# SPDX-License-Identifier: MIT
|
|
3
|
-
"""Base system prompt for Code Agent - universal development guidance."""
|
|
4
|
-
|
|
5
|
-
import os
|
|
6
|
-
from typing import Optional
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
def get_base_prompt(gaia_md_path: Optional[str] = None) -> str:
|
|
10
|
-
"""Get the universal, language-agnostic prompt for Code Agent.
|
|
11
|
-
|
|
12
|
-
This contains core instructions that apply to all programming languages:
|
|
13
|
-
- JSON response format
|
|
14
|
-
- Tool calling conventions
|
|
15
|
-
- General error recovery patterns
|
|
16
|
-
- Planning and validation workflow
|
|
17
|
-
- Project context loading
|
|
18
|
-
|
|
19
|
-
Args:
|
|
20
|
-
gaia_md_path: Optional path to GAIA.md file for project context
|
|
21
|
-
|
|
22
|
-
Returns:
|
|
23
|
-
Base system prompt string with project context if available
|
|
24
|
-
"""
|
|
25
|
-
# Load project context if available
|
|
26
|
-
gaia_context = ""
|
|
27
|
-
gaia_path = gaia_md_path or "GAIA.md"
|
|
28
|
-
|
|
29
|
-
if os.path.exists(gaia_path):
|
|
30
|
-
try:
|
|
31
|
-
with open(gaia_path, "r", encoding="utf-8") as f:
|
|
32
|
-
gaia_content = f.read()
|
|
33
|
-
gaia_context = f"\n\nProject Context:\n{gaia_content}\n"
|
|
34
|
-
except Exception:
|
|
35
|
-
pass
|
|
36
|
-
|
|
37
|
-
return f"""You are a code assistant. Execute tasks using tools.
|
|
38
|
-
|
|
39
|
-
{gaia_context}
|
|
40
|
-
|
|
41
|
-
## Response Format
|
|
42
|
-
Your responses must be valid JSON:
|
|
43
|
-
{{"thought": "reasoning", "goal": "objective", "plan": [list of tool calls]}}
|
|
44
|
-
|
|
45
|
-
Each plan step must be:
|
|
46
|
-
{{"tool": "tool_name", "tool_args": {{"arg1": "value1", "arg2": "value2"}}}}
|
|
47
|
-
|
|
48
|
-
## Rules
|
|
49
|
-
1. Call ONE tool at a time
|
|
50
|
-
2. Check the result before proceeding
|
|
51
|
-
3. If result has `error`, fix the issue before continuing
|
|
52
|
-
4. Ask clarifying questions when requirements are ambiguous
|
|
53
|
-
|
|
54
|
-
## Tool Selection
|
|
55
|
-
- For CLI commands: `run_cli_command`
|
|
56
|
-
- For API routes: `manage_api_endpoint`
|
|
57
|
-
- For React components: `manage_react_component`
|
|
58
|
-
- For Prisma models: `manage_data_model` then `setup_prisma`
|
|
59
|
-
- For any file: `write_file` or `edit_file`
|
|
60
|
-
|
|
61
|
-
## Research Tools (USE THESE WHEN ENCOUNTERING ERRORS)
|
|
62
|
-
- `search_documentation(query, library)` - Search official library docs
|
|
63
|
-
Examples:
|
|
64
|
-
- `search_documentation("App Router POST handler", library="nextjs")`
|
|
65
|
-
- `search_documentation("Prisma DateTime field", library="prisma")`
|
|
66
|
-
- `search_documentation("zod validation schema", library="zod")`
|
|
67
|
-
- `search_web(query)` - Search web for error solutions and current patterns
|
|
68
|
-
Examples:
|
|
69
|
-
- `search_web("Next.js 14 405 Method Not Allowed")`
|
|
70
|
-
- `search_web("Prisma client not generating types")`
|
|
71
|
-
|
|
72
|
-
**WHEN TO USE:**
|
|
73
|
-
- ALWAYS search before fixing library-related errors (Prisma, Next.js, React, Zod)
|
|
74
|
-
- When encountering type errors, hydration errors, or validation errors
|
|
75
|
-
- When a fix attempt fails - search for the correct solution
|
|
76
|
-
- Do NOT guess at fixes without searching first
|
|
77
|
-
"""
|
|
1
|
+
# Copyright(C) 2025-2026 Advanced Micro Devices, Inc. All rights reserved.
|
|
2
|
+
# SPDX-License-Identifier: MIT
|
|
3
|
+
"""Base system prompt for Code Agent - universal development guidance."""
|
|
4
|
+
|
|
5
|
+
import os
|
|
6
|
+
from typing import Optional
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
def get_base_prompt(gaia_md_path: Optional[str] = None) -> str:
|
|
10
|
+
"""Get the universal, language-agnostic prompt for Code Agent.
|
|
11
|
+
|
|
12
|
+
This contains core instructions that apply to all programming languages:
|
|
13
|
+
- JSON response format
|
|
14
|
+
- Tool calling conventions
|
|
15
|
+
- General error recovery patterns
|
|
16
|
+
- Planning and validation workflow
|
|
17
|
+
- Project context loading
|
|
18
|
+
|
|
19
|
+
Args:
|
|
20
|
+
gaia_md_path: Optional path to GAIA.md file for project context
|
|
21
|
+
|
|
22
|
+
Returns:
|
|
23
|
+
Base system prompt string with project context if available
|
|
24
|
+
"""
|
|
25
|
+
# Load project context if available
|
|
26
|
+
gaia_context = ""
|
|
27
|
+
gaia_path = gaia_md_path or "GAIA.md"
|
|
28
|
+
|
|
29
|
+
if os.path.exists(gaia_path):
|
|
30
|
+
try:
|
|
31
|
+
with open(gaia_path, "r", encoding="utf-8") as f:
|
|
32
|
+
gaia_content = f.read()
|
|
33
|
+
gaia_context = f"\n\nProject Context:\n{gaia_content}\n"
|
|
34
|
+
except Exception:
|
|
35
|
+
pass
|
|
36
|
+
|
|
37
|
+
return f"""You are a code assistant. Execute tasks using tools.
|
|
38
|
+
|
|
39
|
+
{gaia_context}
|
|
40
|
+
|
|
41
|
+
## Response Format
|
|
42
|
+
Your responses must be valid JSON:
|
|
43
|
+
{{"thought": "reasoning", "goal": "objective", "plan": [list of tool calls]}}
|
|
44
|
+
|
|
45
|
+
Each plan step must be:
|
|
46
|
+
{{"tool": "tool_name", "tool_args": {{"arg1": "value1", "arg2": "value2"}}}}
|
|
47
|
+
|
|
48
|
+
## Rules
|
|
49
|
+
1. Call ONE tool at a time
|
|
50
|
+
2. Check the result before proceeding
|
|
51
|
+
3. If result has `error`, fix the issue before continuing
|
|
52
|
+
4. Ask clarifying questions when requirements are ambiguous
|
|
53
|
+
|
|
54
|
+
## Tool Selection
|
|
55
|
+
- For CLI commands: `run_cli_command`
|
|
56
|
+
- For API routes: `manage_api_endpoint`
|
|
57
|
+
- For React components: `manage_react_component`
|
|
58
|
+
- For Prisma models: `manage_data_model` then `setup_prisma`
|
|
59
|
+
- For any file: `write_file` or `edit_file`
|
|
60
|
+
|
|
61
|
+
## Research Tools (USE THESE WHEN ENCOUNTERING ERRORS)
|
|
62
|
+
- `search_documentation(query, library)` - Search official library docs
|
|
63
|
+
Examples:
|
|
64
|
+
- `search_documentation("App Router POST handler", library="nextjs")`
|
|
65
|
+
- `search_documentation("Prisma DateTime field", library="prisma")`
|
|
66
|
+
- `search_documentation("zod validation schema", library="zod")`
|
|
67
|
+
- `search_web(query)` - Search web for error solutions and current patterns
|
|
68
|
+
Examples:
|
|
69
|
+
- `search_web("Next.js 14 405 Method Not Allowed")`
|
|
70
|
+
- `search_web("Prisma client not generating types")`
|
|
71
|
+
|
|
72
|
+
**WHEN TO USE:**
|
|
73
|
+
- ALWAYS search before fixing library-related errors (Prisma, Next.js, React, Zod)
|
|
74
|
+
- When encountering type errors, hydration errors, or validation errors
|
|
75
|
+
- When a fix attempt fails - search for the correct solution
|
|
76
|
+
- Do NOT guess at fixes without searching first
|
|
77
|
+
"""
|