amd-gaia 0.15.0__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.15.0.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.15.0.dist-info → amd_gaia-0.15.1.dist-info}/entry_points.txt +1 -0
- {amd_gaia-0.15.0.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 -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/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.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.1.dist-info}/WHEEL +0 -0
- {amd_gaia-0.15.0.dist-info → amd_gaia-0.15.1.dist-info}/top_level.txt +0 -0
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
# Copyright(C) 2025-2026 Advanced Micro Devices, Inc. All rights reserved.
|
|
2
|
-
# SPDX-License-Identifier: MIT
|
|
3
|
-
"""Workflow definitions for orchestration."""
|
|
4
|
-
|
|
5
|
-
from .base import ValidationConfig, WorkflowPhase
|
|
6
|
-
from .nextjs import create_nextjs_workflow
|
|
7
|
-
from .python import create_python_workflow
|
|
8
|
-
|
|
9
|
-
__all__ = [
|
|
10
|
-
"WorkflowPhase",
|
|
11
|
-
"ValidationConfig",
|
|
12
|
-
"create_nextjs_workflow",
|
|
13
|
-
"create_python_workflow",
|
|
14
|
-
]
|
|
1
|
+
# Copyright(C) 2025-2026 Advanced Micro Devices, Inc. All rights reserved.
|
|
2
|
+
# SPDX-License-Identifier: MIT
|
|
3
|
+
"""Workflow definitions for orchestration."""
|
|
4
|
+
|
|
5
|
+
from .base import ValidationConfig, WorkflowPhase
|
|
6
|
+
from .nextjs import create_nextjs_workflow
|
|
7
|
+
from .python import create_python_workflow
|
|
8
|
+
|
|
9
|
+
__all__ = [
|
|
10
|
+
"WorkflowPhase",
|
|
11
|
+
"ValidationConfig",
|
|
12
|
+
"create_nextjs_workflow",
|
|
13
|
+
"create_python_workflow",
|
|
14
|
+
]
|
|
@@ -1,80 +1,80 @@
|
|
|
1
|
-
# Copyright(C) 2025-2026 Advanced Micro Devices, Inc. All rights reserved.
|
|
2
|
-
# SPDX-License-Identifier: MIT
|
|
3
|
-
"""
|
|
4
|
-
Base workflow definitions for orchestration.
|
|
5
|
-
|
|
6
|
-
Workflows are composed of phases, each containing steps.
|
|
7
|
-
"""
|
|
8
|
-
|
|
9
|
-
from dataclasses import dataclass, field
|
|
10
|
-
from typing import List, Optional
|
|
11
|
-
|
|
12
|
-
from ..steps.base import BaseStep
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
@dataclass
|
|
16
|
-
class ValidationConfig:
|
|
17
|
-
"""Configuration for validation after each step/phase.
|
|
18
|
-
|
|
19
|
-
Ensures linting, TypeScript validation, and tests run at appropriate times.
|
|
20
|
-
"""
|
|
21
|
-
|
|
22
|
-
run_lint: bool = True
|
|
23
|
-
run_typecheck: bool = True
|
|
24
|
-
run_tests: bool = True
|
|
25
|
-
lint_command: str = "npm run lint"
|
|
26
|
-
typecheck_command: str = "npx -y tsc --noEmit"
|
|
27
|
-
test_command: str = "npm test"
|
|
28
|
-
fail_on_lint_error: bool = False # Warnings OK, errors fail
|
|
29
|
-
fail_on_type_error: bool = True
|
|
30
|
-
fail_on_test_error: bool = True
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
@dataclass
|
|
34
|
-
class WorkflowPhase:
|
|
35
|
-
"""A phase in the workflow containing multiple steps.
|
|
36
|
-
|
|
37
|
-
Phases group related steps together:
|
|
38
|
-
- initialization: Project setup, dependencies
|
|
39
|
-
- data_layer: Database schema, migrations
|
|
40
|
-
- api: API routes, handlers
|
|
41
|
-
- ui: Components, pages
|
|
42
|
-
- validation: Testing, linting
|
|
43
|
-
"""
|
|
44
|
-
|
|
45
|
-
name: str
|
|
46
|
-
description: str
|
|
47
|
-
steps: List[BaseStep] = field(default_factory=list)
|
|
48
|
-
validation: Optional[ValidationConfig] = None
|
|
49
|
-
required: bool = True # If False, phase can be skipped
|
|
50
|
-
|
|
51
|
-
def add_step(self, step: BaseStep) -> "WorkflowPhase":
|
|
52
|
-
"""Add a step to this phase (fluent interface)."""
|
|
53
|
-
self.steps.append(step)
|
|
54
|
-
return self
|
|
55
|
-
|
|
56
|
-
def with_validation(
|
|
57
|
-
self,
|
|
58
|
-
lint: bool = True,
|
|
59
|
-
typecheck: bool = True,
|
|
60
|
-
tests: bool = True,
|
|
61
|
-
fail_on_type_error: bool = True,
|
|
62
|
-
fail_on_test_error: bool = True,
|
|
63
|
-
) -> "WorkflowPhase":
|
|
64
|
-
"""Configure validation for this phase (fluent interface).
|
|
65
|
-
|
|
66
|
-
Args:
|
|
67
|
-
lint: Run linting
|
|
68
|
-
typecheck: Run TypeScript type checking
|
|
69
|
-
tests: Run tests
|
|
70
|
-
fail_on_type_error: Stop workflow if type check fails (default: True)
|
|
71
|
-
fail_on_test_error: Stop workflow if tests fail (default: True)
|
|
72
|
-
"""
|
|
73
|
-
self.validation = ValidationConfig(
|
|
74
|
-
run_lint=lint,
|
|
75
|
-
run_typecheck=typecheck,
|
|
76
|
-
run_tests=tests,
|
|
77
|
-
fail_on_type_error=fail_on_type_error,
|
|
78
|
-
fail_on_test_error=fail_on_test_error,
|
|
79
|
-
)
|
|
80
|
-
return self
|
|
1
|
+
# Copyright(C) 2025-2026 Advanced Micro Devices, Inc. All rights reserved.
|
|
2
|
+
# SPDX-License-Identifier: MIT
|
|
3
|
+
"""
|
|
4
|
+
Base workflow definitions for orchestration.
|
|
5
|
+
|
|
6
|
+
Workflows are composed of phases, each containing steps.
|
|
7
|
+
"""
|
|
8
|
+
|
|
9
|
+
from dataclasses import dataclass, field
|
|
10
|
+
from typing import List, Optional
|
|
11
|
+
|
|
12
|
+
from ..steps.base import BaseStep
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
@dataclass
|
|
16
|
+
class ValidationConfig:
|
|
17
|
+
"""Configuration for validation after each step/phase.
|
|
18
|
+
|
|
19
|
+
Ensures linting, TypeScript validation, and tests run at appropriate times.
|
|
20
|
+
"""
|
|
21
|
+
|
|
22
|
+
run_lint: bool = True
|
|
23
|
+
run_typecheck: bool = True
|
|
24
|
+
run_tests: bool = True
|
|
25
|
+
lint_command: str = "npm run lint"
|
|
26
|
+
typecheck_command: str = "npx -y tsc --noEmit"
|
|
27
|
+
test_command: str = "npm test"
|
|
28
|
+
fail_on_lint_error: bool = False # Warnings OK, errors fail
|
|
29
|
+
fail_on_type_error: bool = True
|
|
30
|
+
fail_on_test_error: bool = True
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
@dataclass
|
|
34
|
+
class WorkflowPhase:
|
|
35
|
+
"""A phase in the workflow containing multiple steps.
|
|
36
|
+
|
|
37
|
+
Phases group related steps together:
|
|
38
|
+
- initialization: Project setup, dependencies
|
|
39
|
+
- data_layer: Database schema, migrations
|
|
40
|
+
- api: API routes, handlers
|
|
41
|
+
- ui: Components, pages
|
|
42
|
+
- validation: Testing, linting
|
|
43
|
+
"""
|
|
44
|
+
|
|
45
|
+
name: str
|
|
46
|
+
description: str
|
|
47
|
+
steps: List[BaseStep] = field(default_factory=list)
|
|
48
|
+
validation: Optional[ValidationConfig] = None
|
|
49
|
+
required: bool = True # If False, phase can be skipped
|
|
50
|
+
|
|
51
|
+
def add_step(self, step: BaseStep) -> "WorkflowPhase":
|
|
52
|
+
"""Add a step to this phase (fluent interface)."""
|
|
53
|
+
self.steps.append(step)
|
|
54
|
+
return self
|
|
55
|
+
|
|
56
|
+
def with_validation(
|
|
57
|
+
self,
|
|
58
|
+
lint: bool = True,
|
|
59
|
+
typecheck: bool = True,
|
|
60
|
+
tests: bool = True,
|
|
61
|
+
fail_on_type_error: bool = True,
|
|
62
|
+
fail_on_test_error: bool = True,
|
|
63
|
+
) -> "WorkflowPhase":
|
|
64
|
+
"""Configure validation for this phase (fluent interface).
|
|
65
|
+
|
|
66
|
+
Args:
|
|
67
|
+
lint: Run linting
|
|
68
|
+
typecheck: Run TypeScript type checking
|
|
69
|
+
tests: Run tests
|
|
70
|
+
fail_on_type_error: Stop workflow if type check fails (default: True)
|
|
71
|
+
fail_on_test_error: Stop workflow if tests fail (default: True)
|
|
72
|
+
"""
|
|
73
|
+
self.validation = ValidationConfig(
|
|
74
|
+
run_lint=lint,
|
|
75
|
+
run_typecheck=typecheck,
|
|
76
|
+
run_tests=tests,
|
|
77
|
+
fail_on_type_error=fail_on_type_error,
|
|
78
|
+
fail_on_test_error=fail_on_test_error,
|
|
79
|
+
)
|
|
80
|
+
return self
|
|
@@ -1,186 +1,186 @@
|
|
|
1
|
-
# Copyright(C) 2025-2026 Advanced Micro Devices, Inc. All rights reserved.
|
|
2
|
-
# SPDX-License-Identifier: MIT
|
|
3
|
-
"""
|
|
4
|
-
Next.js workflow definition.
|
|
5
|
-
|
|
6
|
-
Defines the phases and steps for building Next.js CRUD applications.
|
|
7
|
-
"""
|
|
8
|
-
|
|
9
|
-
from typing import List
|
|
10
|
-
|
|
11
|
-
from ..steps.base import UserContext
|
|
12
|
-
from ..steps.nextjs import (
|
|
13
|
-
CreateNextAppStep,
|
|
14
|
-
InstallDependenciesStep,
|
|
15
|
-
ManageApiEndpointDynamicStep,
|
|
16
|
-
ManageApiEndpointStep,
|
|
17
|
-
ManageDataModelStep,
|
|
18
|
-
ManageReactComponentStep,
|
|
19
|
-
PrismaInitStep,
|
|
20
|
-
RunTestsStep,
|
|
21
|
-
SetupAppStylingStep,
|
|
22
|
-
SetupPrismaStep,
|
|
23
|
-
SetupTestingStep,
|
|
24
|
-
TestCrudApiStep,
|
|
25
|
-
UpdateLandingPageStep,
|
|
26
|
-
ValidateCrudStructureStep,
|
|
27
|
-
ValidateTypescriptStep,
|
|
28
|
-
)
|
|
29
|
-
from .base import WorkflowPhase
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
def create_nextjs_workflow(context: UserContext) -> List[WorkflowPhase]:
|
|
33
|
-
"""Create the Next.js CRUD workflow phases.
|
|
34
|
-
|
|
35
|
-
Args:
|
|
36
|
-
context: User context with request details
|
|
37
|
-
|
|
38
|
-
Returns:
|
|
39
|
-
List of workflow phases
|
|
40
|
-
"""
|
|
41
|
-
entity = context.entity_name or "Item"
|
|
42
|
-
fields = context.schema_fields or {"title": "string", "completed": "boolean"}
|
|
43
|
-
|
|
44
|
-
# Phase 0: Project Initialization
|
|
45
|
-
# Includes testing deps so they're available when test files are generated
|
|
46
|
-
init_phase = WorkflowPhase(
|
|
47
|
-
name="initialization",
|
|
48
|
-
description="Set up Next.js project with dependencies",
|
|
49
|
-
steps=[
|
|
50
|
-
CreateNextAppStep(
|
|
51
|
-
name="create_next_app",
|
|
52
|
-
description="Initialize Next.js project",
|
|
53
|
-
),
|
|
54
|
-
SetupAppStylingStep(
|
|
55
|
-
name="setup_styling",
|
|
56
|
-
description="Configure modern app-wide styling",
|
|
57
|
-
),
|
|
58
|
-
InstallDependenciesStep(
|
|
59
|
-
name="install_deps",
|
|
60
|
-
description="Install Prisma, Zod, and other dependencies",
|
|
61
|
-
),
|
|
62
|
-
SetupTestingStep(
|
|
63
|
-
name="setup_testing",
|
|
64
|
-
description="Install Vitest and testing libraries",
|
|
65
|
-
),
|
|
66
|
-
PrismaInitStep(
|
|
67
|
-
name="prisma_init",
|
|
68
|
-
description="Initialize Prisma with SQLite",
|
|
69
|
-
),
|
|
70
|
-
],
|
|
71
|
-
)
|
|
72
|
-
|
|
73
|
-
# Phase 1: Data Layer
|
|
74
|
-
data_phase = WorkflowPhase(
|
|
75
|
-
name="data_layer",
|
|
76
|
-
description="Create database model and API routes",
|
|
77
|
-
steps=[
|
|
78
|
-
ManageDataModelStep(
|
|
79
|
-
name="data_model",
|
|
80
|
-
description=f"Create {entity} Prisma model",
|
|
81
|
-
entity_name=entity,
|
|
82
|
-
fields=fields,
|
|
83
|
-
),
|
|
84
|
-
SetupPrismaStep(
|
|
85
|
-
name="setup_prisma",
|
|
86
|
-
description="Generate Prisma client and push to database",
|
|
87
|
-
),
|
|
88
|
-
ManageApiEndpointStep(
|
|
89
|
-
name="api_collection",
|
|
90
|
-
description=f"Create {entity} collection API (GET, POST)",
|
|
91
|
-
entity_name=entity,
|
|
92
|
-
fields=fields,
|
|
93
|
-
),
|
|
94
|
-
ManageApiEndpointDynamicStep(
|
|
95
|
-
name="api_item",
|
|
96
|
-
description=f"Create {entity} item API (GET, PATCH, DELETE)",
|
|
97
|
-
entity_name=entity,
|
|
98
|
-
fields=fields,
|
|
99
|
-
),
|
|
100
|
-
],
|
|
101
|
-
).with_validation(lint=False, typecheck=True, tests=False, fail_on_type_error=False)
|
|
102
|
-
|
|
103
|
-
# Phase 2: UI Components
|
|
104
|
-
ui_phase = WorkflowPhase(
|
|
105
|
-
name="ui_components",
|
|
106
|
-
description="Create React components and pages",
|
|
107
|
-
steps=[
|
|
108
|
-
ManageReactComponentStep(
|
|
109
|
-
name="list_component",
|
|
110
|
-
description=f"Create {entity} list page",
|
|
111
|
-
entity_name=entity,
|
|
112
|
-
variant="list",
|
|
113
|
-
fields=fields,
|
|
114
|
-
),
|
|
115
|
-
ManageReactComponentStep(
|
|
116
|
-
name="form_component",
|
|
117
|
-
description=f"Create {entity} form component",
|
|
118
|
-
entity_name=entity,
|
|
119
|
-
variant="form",
|
|
120
|
-
fields=fields,
|
|
121
|
-
),
|
|
122
|
-
ManageReactComponentStep(
|
|
123
|
-
name="new_page",
|
|
124
|
-
description=f"Create {entity} new page",
|
|
125
|
-
entity_name=entity,
|
|
126
|
-
variant="new",
|
|
127
|
-
fields=fields,
|
|
128
|
-
),
|
|
129
|
-
# Actions must come before detail_page since detail_page imports it
|
|
130
|
-
ManageReactComponentStep(
|
|
131
|
-
name="actions_component",
|
|
132
|
-
description=f"Create {entity} actions component",
|
|
133
|
-
entity_name=entity,
|
|
134
|
-
variant="actions",
|
|
135
|
-
fields=fields,
|
|
136
|
-
),
|
|
137
|
-
ManageReactComponentStep(
|
|
138
|
-
name="detail_page",
|
|
139
|
-
description=f"Create {entity} detail page",
|
|
140
|
-
entity_name=entity,
|
|
141
|
-
variant="detail",
|
|
142
|
-
fields=fields,
|
|
143
|
-
),
|
|
144
|
-
],
|
|
145
|
-
).with_validation(lint=False, typecheck=True, tests=False, fail_on_type_error=False)
|
|
146
|
-
|
|
147
|
-
# Phase 3: Validation & Polish
|
|
148
|
-
validation_phase = WorkflowPhase(
|
|
149
|
-
name="validation",
|
|
150
|
-
description="Validate structure and run tests",
|
|
151
|
-
steps=[
|
|
152
|
-
ValidateCrudStructureStep(
|
|
153
|
-
name="validate_structure",
|
|
154
|
-
description="Check all required files exist",
|
|
155
|
-
entity_name=entity,
|
|
156
|
-
),
|
|
157
|
-
ValidateTypescriptStep(
|
|
158
|
-
name="validate_typescript",
|
|
159
|
-
description="Run TypeScript compiler",
|
|
160
|
-
),
|
|
161
|
-
TestCrudApiStep(
|
|
162
|
-
name="test_api",
|
|
163
|
-
description="Test CRUD operations",
|
|
164
|
-
entity_name=entity,
|
|
165
|
-
),
|
|
166
|
-
UpdateLandingPageStep(
|
|
167
|
-
name="update_landing",
|
|
168
|
-
description="Add navigation link to landing page",
|
|
169
|
-
entity_name=entity,
|
|
170
|
-
),
|
|
171
|
-
],
|
|
172
|
-
)
|
|
173
|
-
|
|
174
|
-
# Phase 4: Run Tests
|
|
175
|
-
testing_phase = WorkflowPhase(
|
|
176
|
-
name="testing",
|
|
177
|
-
description="Run all tests",
|
|
178
|
-
steps=[
|
|
179
|
-
RunTestsStep(
|
|
180
|
-
name="run_tests",
|
|
181
|
-
description="Run all tests with npm test",
|
|
182
|
-
),
|
|
183
|
-
],
|
|
184
|
-
)
|
|
185
|
-
|
|
186
|
-
return [init_phase, data_phase, ui_phase, validation_phase, testing_phase]
|
|
1
|
+
# Copyright(C) 2025-2026 Advanced Micro Devices, Inc. All rights reserved.
|
|
2
|
+
# SPDX-License-Identifier: MIT
|
|
3
|
+
"""
|
|
4
|
+
Next.js workflow definition.
|
|
5
|
+
|
|
6
|
+
Defines the phases and steps for building Next.js CRUD applications.
|
|
7
|
+
"""
|
|
8
|
+
|
|
9
|
+
from typing import List
|
|
10
|
+
|
|
11
|
+
from ..steps.base import UserContext
|
|
12
|
+
from ..steps.nextjs import (
|
|
13
|
+
CreateNextAppStep,
|
|
14
|
+
InstallDependenciesStep,
|
|
15
|
+
ManageApiEndpointDynamicStep,
|
|
16
|
+
ManageApiEndpointStep,
|
|
17
|
+
ManageDataModelStep,
|
|
18
|
+
ManageReactComponentStep,
|
|
19
|
+
PrismaInitStep,
|
|
20
|
+
RunTestsStep,
|
|
21
|
+
SetupAppStylingStep,
|
|
22
|
+
SetupPrismaStep,
|
|
23
|
+
SetupTestingStep,
|
|
24
|
+
TestCrudApiStep,
|
|
25
|
+
UpdateLandingPageStep,
|
|
26
|
+
ValidateCrudStructureStep,
|
|
27
|
+
ValidateTypescriptStep,
|
|
28
|
+
)
|
|
29
|
+
from .base import WorkflowPhase
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
def create_nextjs_workflow(context: UserContext) -> List[WorkflowPhase]:
|
|
33
|
+
"""Create the Next.js CRUD workflow phases.
|
|
34
|
+
|
|
35
|
+
Args:
|
|
36
|
+
context: User context with request details
|
|
37
|
+
|
|
38
|
+
Returns:
|
|
39
|
+
List of workflow phases
|
|
40
|
+
"""
|
|
41
|
+
entity = context.entity_name or "Item"
|
|
42
|
+
fields = context.schema_fields or {"title": "string", "completed": "boolean"}
|
|
43
|
+
|
|
44
|
+
# Phase 0: Project Initialization
|
|
45
|
+
# Includes testing deps so they're available when test files are generated
|
|
46
|
+
init_phase = WorkflowPhase(
|
|
47
|
+
name="initialization",
|
|
48
|
+
description="Set up Next.js project with dependencies",
|
|
49
|
+
steps=[
|
|
50
|
+
CreateNextAppStep(
|
|
51
|
+
name="create_next_app",
|
|
52
|
+
description="Initialize Next.js project",
|
|
53
|
+
),
|
|
54
|
+
SetupAppStylingStep(
|
|
55
|
+
name="setup_styling",
|
|
56
|
+
description="Configure modern app-wide styling",
|
|
57
|
+
),
|
|
58
|
+
InstallDependenciesStep(
|
|
59
|
+
name="install_deps",
|
|
60
|
+
description="Install Prisma, Zod, and other dependencies",
|
|
61
|
+
),
|
|
62
|
+
SetupTestingStep(
|
|
63
|
+
name="setup_testing",
|
|
64
|
+
description="Install Vitest and testing libraries",
|
|
65
|
+
),
|
|
66
|
+
PrismaInitStep(
|
|
67
|
+
name="prisma_init",
|
|
68
|
+
description="Initialize Prisma with SQLite",
|
|
69
|
+
),
|
|
70
|
+
],
|
|
71
|
+
)
|
|
72
|
+
|
|
73
|
+
# Phase 1: Data Layer
|
|
74
|
+
data_phase = WorkflowPhase(
|
|
75
|
+
name="data_layer",
|
|
76
|
+
description="Create database model and API routes",
|
|
77
|
+
steps=[
|
|
78
|
+
ManageDataModelStep(
|
|
79
|
+
name="data_model",
|
|
80
|
+
description=f"Create {entity} Prisma model",
|
|
81
|
+
entity_name=entity,
|
|
82
|
+
fields=fields,
|
|
83
|
+
),
|
|
84
|
+
SetupPrismaStep(
|
|
85
|
+
name="setup_prisma",
|
|
86
|
+
description="Generate Prisma client and push to database",
|
|
87
|
+
),
|
|
88
|
+
ManageApiEndpointStep(
|
|
89
|
+
name="api_collection",
|
|
90
|
+
description=f"Create {entity} collection API (GET, POST)",
|
|
91
|
+
entity_name=entity,
|
|
92
|
+
fields=fields,
|
|
93
|
+
),
|
|
94
|
+
ManageApiEndpointDynamicStep(
|
|
95
|
+
name="api_item",
|
|
96
|
+
description=f"Create {entity} item API (GET, PATCH, DELETE)",
|
|
97
|
+
entity_name=entity,
|
|
98
|
+
fields=fields,
|
|
99
|
+
),
|
|
100
|
+
],
|
|
101
|
+
).with_validation(lint=False, typecheck=True, tests=False, fail_on_type_error=False)
|
|
102
|
+
|
|
103
|
+
# Phase 2: UI Components
|
|
104
|
+
ui_phase = WorkflowPhase(
|
|
105
|
+
name="ui_components",
|
|
106
|
+
description="Create React components and pages",
|
|
107
|
+
steps=[
|
|
108
|
+
ManageReactComponentStep(
|
|
109
|
+
name="list_component",
|
|
110
|
+
description=f"Create {entity} list page",
|
|
111
|
+
entity_name=entity,
|
|
112
|
+
variant="list",
|
|
113
|
+
fields=fields,
|
|
114
|
+
),
|
|
115
|
+
ManageReactComponentStep(
|
|
116
|
+
name="form_component",
|
|
117
|
+
description=f"Create {entity} form component",
|
|
118
|
+
entity_name=entity,
|
|
119
|
+
variant="form",
|
|
120
|
+
fields=fields,
|
|
121
|
+
),
|
|
122
|
+
ManageReactComponentStep(
|
|
123
|
+
name="new_page",
|
|
124
|
+
description=f"Create {entity} new page",
|
|
125
|
+
entity_name=entity,
|
|
126
|
+
variant="new",
|
|
127
|
+
fields=fields,
|
|
128
|
+
),
|
|
129
|
+
# Actions must come before detail_page since detail_page imports it
|
|
130
|
+
ManageReactComponentStep(
|
|
131
|
+
name="actions_component",
|
|
132
|
+
description=f"Create {entity} actions component",
|
|
133
|
+
entity_name=entity,
|
|
134
|
+
variant="actions",
|
|
135
|
+
fields=fields,
|
|
136
|
+
),
|
|
137
|
+
ManageReactComponentStep(
|
|
138
|
+
name="detail_page",
|
|
139
|
+
description=f"Create {entity} detail page",
|
|
140
|
+
entity_name=entity,
|
|
141
|
+
variant="detail",
|
|
142
|
+
fields=fields,
|
|
143
|
+
),
|
|
144
|
+
],
|
|
145
|
+
).with_validation(lint=False, typecheck=True, tests=False, fail_on_type_error=False)
|
|
146
|
+
|
|
147
|
+
# Phase 3: Validation & Polish
|
|
148
|
+
validation_phase = WorkflowPhase(
|
|
149
|
+
name="validation",
|
|
150
|
+
description="Validate structure and run tests",
|
|
151
|
+
steps=[
|
|
152
|
+
ValidateCrudStructureStep(
|
|
153
|
+
name="validate_structure",
|
|
154
|
+
description="Check all required files exist",
|
|
155
|
+
entity_name=entity,
|
|
156
|
+
),
|
|
157
|
+
ValidateTypescriptStep(
|
|
158
|
+
name="validate_typescript",
|
|
159
|
+
description="Run TypeScript compiler",
|
|
160
|
+
),
|
|
161
|
+
TestCrudApiStep(
|
|
162
|
+
name="test_api",
|
|
163
|
+
description="Test CRUD operations",
|
|
164
|
+
entity_name=entity,
|
|
165
|
+
),
|
|
166
|
+
UpdateLandingPageStep(
|
|
167
|
+
name="update_landing",
|
|
168
|
+
description="Add navigation link to landing page",
|
|
169
|
+
entity_name=entity,
|
|
170
|
+
),
|
|
171
|
+
],
|
|
172
|
+
)
|
|
173
|
+
|
|
174
|
+
# Phase 4: Run Tests
|
|
175
|
+
testing_phase = WorkflowPhase(
|
|
176
|
+
name="testing",
|
|
177
|
+
description="Run all tests",
|
|
178
|
+
steps=[
|
|
179
|
+
RunTestsStep(
|
|
180
|
+
name="run_tests",
|
|
181
|
+
description="Run all tests with npm test",
|
|
182
|
+
),
|
|
183
|
+
],
|
|
184
|
+
)
|
|
185
|
+
|
|
186
|
+
return [init_phase, data_phase, ui_phase, validation_phase, testing_phase]
|