amd-gaia 0.14.1__py3-none-any.whl → 0.14.3__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/METADATA +223 -0
- amd_gaia-0.14.3.dist-info/RECORD +168 -0
- {amd_gaia-0.14.1.dist-info → amd_gaia-0.14.3.dist-info}/entry_points.txt +1 -0
- gaia/__init__.py +28 -1
- gaia/agents/__init__.py +1 -1
- gaia/agents/base/__init__.py +1 -1
- gaia/agents/base/agent.py +142 -37
- gaia/agents/base/api_agent.py +1 -1
- gaia/agents/base/console.py +400 -16
- gaia/agents/base/errors.py +237 -0
- gaia/agents/base/mcp_agent.py +1 -1
- gaia/agents/base/tools.py +1 -1
- gaia/agents/blender/agent.py +1 -1
- gaia/agents/blender/agent_simple.py +1 -1
- gaia/agents/blender/app.py +1 -1
- gaia/agents/blender/app_simple.py +1 -1
- gaia/agents/blender/core/__init__.py +1 -1
- gaia/agents/blender/core/materials.py +1 -1
- gaia/agents/blender/core/objects.py +1 -1
- gaia/agents/blender/core/rendering.py +1 -1
- gaia/agents/blender/core/scene.py +1 -1
- gaia/agents/blender/core/view.py +1 -1
- gaia/agents/chat/__init__.py +1 -1
- gaia/agents/chat/agent.py +41 -181
- gaia/agents/chat/app.py +1 -1
- gaia/agents/chat/session.py +1 -1
- gaia/agents/chat/tools/__init__.py +1 -1
- gaia/agents/chat/tools/file_tools.py +1 -1
- gaia/agents/chat/tools/rag_tools.py +1 -1
- gaia/agents/chat/tools/shell_tools.py +1 -1
- gaia/agents/code/__init__.py +1 -1
- gaia/agents/code/agent.py +3 -1
- gaia/agents/code/orchestration/__init__.py +1 -1
- gaia/agents/code/orchestration/checklist_executor.py +27 -3
- gaia/agents/code/orchestration/checklist_generator.py +8 -4
- gaia/agents/code/orchestration/factories/__init__.py +1 -1
- gaia/agents/code/orchestration/factories/base.py +1 -1
- gaia/agents/code/orchestration/factories/nextjs_factory.py +1 -1
- gaia/agents/code/orchestration/factories/python_factory.py +1 -1
- gaia/agents/code/orchestration/orchestrator.py +276 -45
- gaia/agents/code/orchestration/project_analyzer.py +1 -1
- gaia/agents/code/orchestration/steps/__init__.py +1 -1
- gaia/agents/code/orchestration/steps/base.py +1 -1
- gaia/agents/code/orchestration/steps/error_handler.py +2 -2
- gaia/agents/code/orchestration/steps/nextjs.py +1 -1
- gaia/agents/code/orchestration/steps/python.py +1 -1
- gaia/agents/code/orchestration/template_catalog.py +8 -2
- gaia/agents/code/orchestration/workflows/__init__.py +1 -1
- gaia/agents/code/orchestration/workflows/base.py +1 -1
- gaia/agents/code/orchestration/workflows/nextjs.py +1 -1
- gaia/agents/code/orchestration/workflows/python.py +1 -1
- gaia/agents/code/prompts/__init__.py +1 -1
- gaia/agents/code/prompts/base_prompt.py +1 -1
- gaia/agents/code/prompts/code_patterns.py +129 -18
- gaia/agents/code/prompts/nextjs_prompt.py +1 -1
- gaia/agents/code/prompts/python_prompt.py +1 -1
- gaia/agents/code/schema_inference.py +1 -1
- gaia/agents/code/system_prompt.py +1 -1
- gaia/agents/code/tools/__init__.py +1 -1
- gaia/agents/code/tools/cli_tools.py +1 -1
- gaia/agents/code/tools/code_formatting.py +2 -2
- gaia/agents/code/tools/code_tools.py +2 -2
- gaia/agents/code/tools/error_fixing.py +1 -1
- gaia/agents/code/tools/external_tools.py +1 -1
- gaia/agents/code/tools/prisma_tools.py +1 -1
- gaia/agents/code/tools/project_management.py +1 -1
- gaia/agents/code/tools/testing.py +1 -1
- gaia/agents/code/tools/typescript_tools.py +1 -1
- gaia/agents/code/tools/validation_parsing.py +1 -1
- gaia/agents/code/tools/validation_tools.py +5 -2
- gaia/agents/code/tools/web_dev_tools.py +17 -3
- gaia/agents/docker/__init__.py +1 -1
- gaia/agents/emr/__init__.py +8 -0
- gaia/agents/emr/agent.py +1506 -0
- gaia/agents/emr/cli.py +1322 -0
- gaia/agents/emr/constants.py +475 -0
- gaia/agents/emr/dashboard/__init__.py +4 -0
- gaia/agents/emr/dashboard/server.py +1974 -0
- gaia/agents/routing/__init__.py +1 -1
- gaia/agents/routing/agent.py +65 -7
- gaia/agents/routing/system_prompt.py +1 -1
- gaia/api/__init__.py +1 -1
- gaia/api/agent_registry.py +1 -1
- gaia/api/app.py +1 -1
- gaia/api/openai_server.py +1 -1
- gaia/api/schemas.py +1 -1
- gaia/api/sse_handler.py +5 -2
- gaia/apps/__init__.py +1 -1
- gaia/apps/llm/__init__.py +1 -1
- gaia/apps/summarize/pdf_formatter.py +1 -1
- gaia/audio/__init__.py +1 -1
- gaia/audio/audio_client.py +3 -3
- gaia/audio/audio_recorder.py +1 -1
- gaia/audio/kokoro_tts.py +3 -3
- gaia/audio/whisper_asr.py +3 -3
- gaia/chat/__init__.py +1 -1
- gaia/chat/prompts.py +1 -1
- gaia/chat/sdk.py +26 -1
- gaia/cli.py +18 -18
- gaia/database/__init__.py +10 -0
- gaia/database/agent.py +176 -0
- gaia/database/mixin.py +290 -0
- gaia/database/testing.py +64 -0
- gaia/eval/batch_experiment.py +2 -2
- gaia/eval/claude.py +5 -5
- gaia/eval/config.py +1 -1
- gaia/eval/email_generator.py +1 -1
- gaia/eval/eval.py +1 -1
- gaia/eval/groundtruth.py +1 -1
- gaia/eval/transcript_generator.py +1 -1
- gaia/eval/webapp/public/app.js +1 -1
- gaia/eval/webapp/server.js +1 -1
- gaia/eval/webapp/test-setup.js +1 -1
- gaia/llm/__init__.py +1 -1
- gaia/llm/lemonade_client.py +149 -11
- gaia/llm/lemonade_manager.py +36 -11
- gaia/llm/llm_client.py +2 -2
- gaia/llm/vlm_client.py +93 -18
- gaia/logger.py +1 -1
- gaia/mcp/agent_mcp_server.py +1 -1
- gaia/mcp/blender_mcp_client.py +1 -1
- gaia/mcp/blender_mcp_server.py +1 -1
- gaia/mcp/context7_cache.py +1 -1
- gaia/mcp/servers/__init__.py +1 -1
- gaia/mcp/servers/docker_mcp.py +1 -1
- gaia/rag/demo.py +5 -5
- gaia/rag/pdf_utils.py +1 -1
- gaia/rag/sdk.py +2 -2
- gaia/security.py +1 -1
- gaia/talk/sdk.py +1 -1
- gaia/testing/__init__.py +87 -0
- gaia/testing/assertions.py +330 -0
- gaia/testing/fixtures.py +333 -0
- gaia/testing/mocks.py +493 -0
- gaia/util.py +1 -1
- gaia/utils/__init__.py +33 -0
- gaia/utils/file_watcher.py +675 -0
- gaia/utils/parsing.py +223 -0
- gaia/version.py +2 -2
- amd_gaia-0.14.1.dist-info/METADATA +0 -768
- amd_gaia-0.14.1.dist-info/RECORD +0 -800
- gaia/eval/webapp/node_modules/.bin/mime +0 -16
- gaia/eval/webapp/node_modules/.bin/mime.cmd +0 -17
- gaia/eval/webapp/node_modules/.bin/mime.ps1 +0 -28
- gaia/eval/webapp/node_modules/.package-lock.json +0 -865
- gaia/eval/webapp/node_modules/accepts/HISTORY.md +0 -243
- gaia/eval/webapp/node_modules/accepts/LICENSE +0 -23
- gaia/eval/webapp/node_modules/accepts/README.md +0 -140
- gaia/eval/webapp/node_modules/accepts/index.js +0 -238
- gaia/eval/webapp/node_modules/accepts/package.json +0 -47
- gaia/eval/webapp/node_modules/array-flatten/LICENSE +0 -21
- gaia/eval/webapp/node_modules/array-flatten/README.md +0 -43
- gaia/eval/webapp/node_modules/array-flatten/array-flatten.js +0 -64
- gaia/eval/webapp/node_modules/array-flatten/package.json +0 -39
- gaia/eval/webapp/node_modules/body-parser/HISTORY.md +0 -672
- gaia/eval/webapp/node_modules/body-parser/LICENSE +0 -23
- gaia/eval/webapp/node_modules/body-parser/README.md +0 -476
- gaia/eval/webapp/node_modules/body-parser/SECURITY.md +0 -25
- gaia/eval/webapp/node_modules/body-parser/index.js +0 -156
- gaia/eval/webapp/node_modules/body-parser/lib/read.js +0 -205
- gaia/eval/webapp/node_modules/body-parser/lib/types/json.js +0 -247
- gaia/eval/webapp/node_modules/body-parser/lib/types/raw.js +0 -101
- gaia/eval/webapp/node_modules/body-parser/lib/types/text.js +0 -121
- gaia/eval/webapp/node_modules/body-parser/lib/types/urlencoded.js +0 -307
- gaia/eval/webapp/node_modules/body-parser/package.json +0 -56
- gaia/eval/webapp/node_modules/bytes/History.md +0 -97
- gaia/eval/webapp/node_modules/bytes/LICENSE +0 -23
- gaia/eval/webapp/node_modules/bytes/Readme.md +0 -152
- gaia/eval/webapp/node_modules/bytes/index.js +0 -170
- gaia/eval/webapp/node_modules/bytes/package.json +0 -42
- gaia/eval/webapp/node_modules/call-bind-apply-helpers/.eslintrc +0 -17
- gaia/eval/webapp/node_modules/call-bind-apply-helpers/.github/FUNDING.yml +0 -12
- gaia/eval/webapp/node_modules/call-bind-apply-helpers/.nycrc +0 -9
- gaia/eval/webapp/node_modules/call-bind-apply-helpers/CHANGELOG.md +0 -30
- gaia/eval/webapp/node_modules/call-bind-apply-helpers/LICENSE +0 -21
- gaia/eval/webapp/node_modules/call-bind-apply-helpers/README.md +0 -62
- gaia/eval/webapp/node_modules/call-bind-apply-helpers/actualApply.d.ts +0 -1
- gaia/eval/webapp/node_modules/call-bind-apply-helpers/actualApply.js +0 -10
- gaia/eval/webapp/node_modules/call-bind-apply-helpers/applyBind.d.ts +0 -19
- gaia/eval/webapp/node_modules/call-bind-apply-helpers/applyBind.js +0 -10
- gaia/eval/webapp/node_modules/call-bind-apply-helpers/functionApply.d.ts +0 -1
- gaia/eval/webapp/node_modules/call-bind-apply-helpers/functionApply.js +0 -4
- gaia/eval/webapp/node_modules/call-bind-apply-helpers/functionCall.d.ts +0 -1
- gaia/eval/webapp/node_modules/call-bind-apply-helpers/functionCall.js +0 -4
- gaia/eval/webapp/node_modules/call-bind-apply-helpers/index.d.ts +0 -64
- gaia/eval/webapp/node_modules/call-bind-apply-helpers/index.js +0 -15
- gaia/eval/webapp/node_modules/call-bind-apply-helpers/package.json +0 -85
- gaia/eval/webapp/node_modules/call-bind-apply-helpers/reflectApply.d.ts +0 -3
- gaia/eval/webapp/node_modules/call-bind-apply-helpers/reflectApply.js +0 -4
- gaia/eval/webapp/node_modules/call-bind-apply-helpers/test/index.js +0 -63
- gaia/eval/webapp/node_modules/call-bind-apply-helpers/tsconfig.json +0 -9
- gaia/eval/webapp/node_modules/call-bound/.eslintrc +0 -13
- gaia/eval/webapp/node_modules/call-bound/.github/FUNDING.yml +0 -12
- gaia/eval/webapp/node_modules/call-bound/.nycrc +0 -9
- gaia/eval/webapp/node_modules/call-bound/CHANGELOG.md +0 -42
- gaia/eval/webapp/node_modules/call-bound/LICENSE +0 -21
- gaia/eval/webapp/node_modules/call-bound/README.md +0 -53
- gaia/eval/webapp/node_modules/call-bound/index.d.ts +0 -94
- gaia/eval/webapp/node_modules/call-bound/index.js +0 -19
- gaia/eval/webapp/node_modules/call-bound/package.json +0 -99
- gaia/eval/webapp/node_modules/call-bound/test/index.js +0 -61
- gaia/eval/webapp/node_modules/call-bound/tsconfig.json +0 -10
- gaia/eval/webapp/node_modules/content-disposition/HISTORY.md +0 -60
- gaia/eval/webapp/node_modules/content-disposition/LICENSE +0 -22
- gaia/eval/webapp/node_modules/content-disposition/README.md +0 -142
- gaia/eval/webapp/node_modules/content-disposition/index.js +0 -458
- gaia/eval/webapp/node_modules/content-disposition/package.json +0 -44
- gaia/eval/webapp/node_modules/content-type/HISTORY.md +0 -29
- gaia/eval/webapp/node_modules/content-type/LICENSE +0 -22
- gaia/eval/webapp/node_modules/content-type/README.md +0 -94
- gaia/eval/webapp/node_modules/content-type/index.js +0 -225
- gaia/eval/webapp/node_modules/content-type/package.json +0 -42
- gaia/eval/webapp/node_modules/cookie/LICENSE +0 -24
- gaia/eval/webapp/node_modules/cookie/README.md +0 -317
- gaia/eval/webapp/node_modules/cookie/SECURITY.md +0 -25
- gaia/eval/webapp/node_modules/cookie/index.js +0 -334
- gaia/eval/webapp/node_modules/cookie/package.json +0 -44
- gaia/eval/webapp/node_modules/cookie-signature/.npmignore +0 -4
- gaia/eval/webapp/node_modules/cookie-signature/History.md +0 -38
- gaia/eval/webapp/node_modules/cookie-signature/Readme.md +0 -42
- gaia/eval/webapp/node_modules/cookie-signature/index.js +0 -51
- gaia/eval/webapp/node_modules/cookie-signature/package.json +0 -18
- gaia/eval/webapp/node_modules/debug/.coveralls.yml +0 -1
- gaia/eval/webapp/node_modules/debug/.eslintrc +0 -11
- gaia/eval/webapp/node_modules/debug/.npmignore +0 -9
- gaia/eval/webapp/node_modules/debug/.travis.yml +0 -14
- gaia/eval/webapp/node_modules/debug/CHANGELOG.md +0 -362
- gaia/eval/webapp/node_modules/debug/LICENSE +0 -19
- gaia/eval/webapp/node_modules/debug/Makefile +0 -50
- gaia/eval/webapp/node_modules/debug/README.md +0 -312
- gaia/eval/webapp/node_modules/debug/component.json +0 -19
- gaia/eval/webapp/node_modules/debug/karma.conf.js +0 -70
- gaia/eval/webapp/node_modules/debug/node.js +0 -1
- gaia/eval/webapp/node_modules/debug/package.json +0 -49
- gaia/eval/webapp/node_modules/debug/src/browser.js +0 -185
- gaia/eval/webapp/node_modules/debug/src/debug.js +0 -202
- gaia/eval/webapp/node_modules/debug/src/index.js +0 -10
- gaia/eval/webapp/node_modules/debug/src/inspector-log.js +0 -15
- gaia/eval/webapp/node_modules/debug/src/node.js +0 -248
- gaia/eval/webapp/node_modules/depd/History.md +0 -103
- gaia/eval/webapp/node_modules/depd/LICENSE +0 -22
- gaia/eval/webapp/node_modules/depd/Readme.md +0 -280
- gaia/eval/webapp/node_modules/depd/index.js +0 -538
- gaia/eval/webapp/node_modules/depd/lib/browser/index.js +0 -77
- gaia/eval/webapp/node_modules/depd/package.json +0 -45
- gaia/eval/webapp/node_modules/destroy/LICENSE +0 -23
- gaia/eval/webapp/node_modules/destroy/README.md +0 -63
- gaia/eval/webapp/node_modules/destroy/index.js +0 -209
- gaia/eval/webapp/node_modules/destroy/package.json +0 -48
- gaia/eval/webapp/node_modules/dunder-proto/.eslintrc +0 -5
- gaia/eval/webapp/node_modules/dunder-proto/.github/FUNDING.yml +0 -12
- gaia/eval/webapp/node_modules/dunder-proto/.nycrc +0 -13
- gaia/eval/webapp/node_modules/dunder-proto/CHANGELOG.md +0 -24
- gaia/eval/webapp/node_modules/dunder-proto/LICENSE +0 -21
- gaia/eval/webapp/node_modules/dunder-proto/README.md +0 -54
- gaia/eval/webapp/node_modules/dunder-proto/get.d.ts +0 -5
- gaia/eval/webapp/node_modules/dunder-proto/get.js +0 -30
- gaia/eval/webapp/node_modules/dunder-proto/package.json +0 -76
- gaia/eval/webapp/node_modules/dunder-proto/set.d.ts +0 -5
- gaia/eval/webapp/node_modules/dunder-proto/set.js +0 -35
- gaia/eval/webapp/node_modules/dunder-proto/test/get.js +0 -34
- gaia/eval/webapp/node_modules/dunder-proto/test/index.js +0 -4
- gaia/eval/webapp/node_modules/dunder-proto/test/set.js +0 -50
- gaia/eval/webapp/node_modules/dunder-proto/tsconfig.json +0 -9
- gaia/eval/webapp/node_modules/ee-first/LICENSE +0 -22
- gaia/eval/webapp/node_modules/ee-first/README.md +0 -80
- gaia/eval/webapp/node_modules/ee-first/index.js +0 -95
- gaia/eval/webapp/node_modules/ee-first/package.json +0 -29
- gaia/eval/webapp/node_modules/encodeurl/LICENSE +0 -22
- gaia/eval/webapp/node_modules/encodeurl/README.md +0 -109
- gaia/eval/webapp/node_modules/encodeurl/index.js +0 -60
- gaia/eval/webapp/node_modules/encodeurl/package.json +0 -40
- gaia/eval/webapp/node_modules/es-define-property/.eslintrc +0 -13
- gaia/eval/webapp/node_modules/es-define-property/.github/FUNDING.yml +0 -12
- gaia/eval/webapp/node_modules/es-define-property/.nycrc +0 -9
- gaia/eval/webapp/node_modules/es-define-property/CHANGELOG.md +0 -29
- gaia/eval/webapp/node_modules/es-define-property/LICENSE +0 -21
- gaia/eval/webapp/node_modules/es-define-property/README.md +0 -49
- gaia/eval/webapp/node_modules/es-define-property/index.d.ts +0 -3
- gaia/eval/webapp/node_modules/es-define-property/index.js +0 -14
- gaia/eval/webapp/node_modules/es-define-property/package.json +0 -81
- gaia/eval/webapp/node_modules/es-define-property/test/index.js +0 -56
- gaia/eval/webapp/node_modules/es-define-property/tsconfig.json +0 -10
- gaia/eval/webapp/node_modules/es-errors/.eslintrc +0 -5
- gaia/eval/webapp/node_modules/es-errors/.github/FUNDING.yml +0 -12
- gaia/eval/webapp/node_modules/es-errors/CHANGELOG.md +0 -40
- gaia/eval/webapp/node_modules/es-errors/LICENSE +0 -21
- gaia/eval/webapp/node_modules/es-errors/README.md +0 -55
- gaia/eval/webapp/node_modules/es-errors/eval.d.ts +0 -3
- gaia/eval/webapp/node_modules/es-errors/eval.js +0 -4
- gaia/eval/webapp/node_modules/es-errors/index.d.ts +0 -3
- gaia/eval/webapp/node_modules/es-errors/index.js +0 -4
- gaia/eval/webapp/node_modules/es-errors/package.json +0 -80
- gaia/eval/webapp/node_modules/es-errors/range.d.ts +0 -3
- gaia/eval/webapp/node_modules/es-errors/range.js +0 -4
- gaia/eval/webapp/node_modules/es-errors/ref.d.ts +0 -3
- gaia/eval/webapp/node_modules/es-errors/ref.js +0 -4
- gaia/eval/webapp/node_modules/es-errors/syntax.d.ts +0 -3
- gaia/eval/webapp/node_modules/es-errors/syntax.js +0 -4
- gaia/eval/webapp/node_modules/es-errors/test/index.js +0 -19
- gaia/eval/webapp/node_modules/es-errors/tsconfig.json +0 -49
- gaia/eval/webapp/node_modules/es-errors/type.d.ts +0 -3
- gaia/eval/webapp/node_modules/es-errors/type.js +0 -4
- gaia/eval/webapp/node_modules/es-errors/uri.d.ts +0 -3
- gaia/eval/webapp/node_modules/es-errors/uri.js +0 -4
- gaia/eval/webapp/node_modules/es-object-atoms/.eslintrc +0 -16
- gaia/eval/webapp/node_modules/es-object-atoms/.github/FUNDING.yml +0 -12
- gaia/eval/webapp/node_modules/es-object-atoms/CHANGELOG.md +0 -37
- gaia/eval/webapp/node_modules/es-object-atoms/LICENSE +0 -21
- gaia/eval/webapp/node_modules/es-object-atoms/README.md +0 -63
- gaia/eval/webapp/node_modules/es-object-atoms/RequireObjectCoercible.d.ts +0 -3
- gaia/eval/webapp/node_modules/es-object-atoms/RequireObjectCoercible.js +0 -11
- gaia/eval/webapp/node_modules/es-object-atoms/ToObject.d.ts +0 -7
- gaia/eval/webapp/node_modules/es-object-atoms/ToObject.js +0 -10
- gaia/eval/webapp/node_modules/es-object-atoms/index.d.ts +0 -3
- gaia/eval/webapp/node_modules/es-object-atoms/index.js +0 -4
- gaia/eval/webapp/node_modules/es-object-atoms/isObject.d.ts +0 -3
- gaia/eval/webapp/node_modules/es-object-atoms/isObject.js +0 -6
- gaia/eval/webapp/node_modules/es-object-atoms/package.json +0 -80
- gaia/eval/webapp/node_modules/es-object-atoms/test/index.js +0 -38
- gaia/eval/webapp/node_modules/es-object-atoms/tsconfig.json +0 -6
- gaia/eval/webapp/node_modules/escape-html/LICENSE +0 -24
- gaia/eval/webapp/node_modules/escape-html/Readme.md +0 -43
- gaia/eval/webapp/node_modules/escape-html/index.js +0 -78
- gaia/eval/webapp/node_modules/escape-html/package.json +0 -24
- gaia/eval/webapp/node_modules/etag/HISTORY.md +0 -83
- gaia/eval/webapp/node_modules/etag/LICENSE +0 -22
- gaia/eval/webapp/node_modules/etag/README.md +0 -159
- gaia/eval/webapp/node_modules/etag/index.js +0 -131
- gaia/eval/webapp/node_modules/etag/package.json +0 -47
- gaia/eval/webapp/node_modules/express/History.md +0 -3656
- gaia/eval/webapp/node_modules/express/LICENSE +0 -24
- gaia/eval/webapp/node_modules/express/Readme.md +0 -260
- gaia/eval/webapp/node_modules/express/index.js +0 -11
- gaia/eval/webapp/node_modules/express/lib/application.js +0 -661
- gaia/eval/webapp/node_modules/express/lib/express.js +0 -116
- gaia/eval/webapp/node_modules/express/lib/middleware/init.js +0 -43
- gaia/eval/webapp/node_modules/express/lib/middleware/query.js +0 -47
- gaia/eval/webapp/node_modules/express/lib/request.js +0 -525
- gaia/eval/webapp/node_modules/express/lib/response.js +0 -1179
- gaia/eval/webapp/node_modules/express/lib/router/index.js +0 -673
- gaia/eval/webapp/node_modules/express/lib/router/layer.js +0 -181
- gaia/eval/webapp/node_modules/express/lib/router/route.js +0 -230
- gaia/eval/webapp/node_modules/express/lib/utils.js +0 -303
- gaia/eval/webapp/node_modules/express/lib/view.js +0 -182
- gaia/eval/webapp/node_modules/express/package.json +0 -102
- gaia/eval/webapp/node_modules/finalhandler/HISTORY.md +0 -210
- gaia/eval/webapp/node_modules/finalhandler/LICENSE +0 -22
- gaia/eval/webapp/node_modules/finalhandler/README.md +0 -147
- gaia/eval/webapp/node_modules/finalhandler/SECURITY.md +0 -25
- gaia/eval/webapp/node_modules/finalhandler/index.js +0 -341
- gaia/eval/webapp/node_modules/finalhandler/package.json +0 -47
- gaia/eval/webapp/node_modules/forwarded/HISTORY.md +0 -21
- gaia/eval/webapp/node_modules/forwarded/LICENSE +0 -22
- gaia/eval/webapp/node_modules/forwarded/README.md +0 -57
- gaia/eval/webapp/node_modules/forwarded/index.js +0 -90
- gaia/eval/webapp/node_modules/forwarded/package.json +0 -45
- gaia/eval/webapp/node_modules/fresh/HISTORY.md +0 -70
- gaia/eval/webapp/node_modules/fresh/LICENSE +0 -23
- gaia/eval/webapp/node_modules/fresh/README.md +0 -119
- gaia/eval/webapp/node_modules/fresh/index.js +0 -137
- gaia/eval/webapp/node_modules/fresh/package.json +0 -46
- gaia/eval/webapp/node_modules/fs/README.md +0 -9
- gaia/eval/webapp/node_modules/fs/package.json +0 -20
- gaia/eval/webapp/node_modules/function-bind/.eslintrc +0 -21
- gaia/eval/webapp/node_modules/function-bind/.github/FUNDING.yml +0 -12
- gaia/eval/webapp/node_modules/function-bind/.github/SECURITY.md +0 -3
- gaia/eval/webapp/node_modules/function-bind/.nycrc +0 -13
- gaia/eval/webapp/node_modules/function-bind/CHANGELOG.md +0 -136
- gaia/eval/webapp/node_modules/function-bind/LICENSE +0 -20
- gaia/eval/webapp/node_modules/function-bind/README.md +0 -46
- gaia/eval/webapp/node_modules/function-bind/implementation.js +0 -84
- gaia/eval/webapp/node_modules/function-bind/index.js +0 -5
- gaia/eval/webapp/node_modules/function-bind/package.json +0 -87
- gaia/eval/webapp/node_modules/function-bind/test/.eslintrc +0 -9
- gaia/eval/webapp/node_modules/function-bind/test/index.js +0 -252
- gaia/eval/webapp/node_modules/get-intrinsic/.eslintrc +0 -42
- gaia/eval/webapp/node_modules/get-intrinsic/.github/FUNDING.yml +0 -12
- gaia/eval/webapp/node_modules/get-intrinsic/.nycrc +0 -9
- gaia/eval/webapp/node_modules/get-intrinsic/CHANGELOG.md +0 -186
- gaia/eval/webapp/node_modules/get-intrinsic/LICENSE +0 -21
- gaia/eval/webapp/node_modules/get-intrinsic/README.md +0 -71
- gaia/eval/webapp/node_modules/get-intrinsic/index.js +0 -378
- gaia/eval/webapp/node_modules/get-intrinsic/package.json +0 -97
- gaia/eval/webapp/node_modules/get-intrinsic/test/GetIntrinsic.js +0 -274
- gaia/eval/webapp/node_modules/get-proto/.eslintrc +0 -10
- gaia/eval/webapp/node_modules/get-proto/.github/FUNDING.yml +0 -12
- gaia/eval/webapp/node_modules/get-proto/.nycrc +0 -9
- gaia/eval/webapp/node_modules/get-proto/CHANGELOG.md +0 -21
- gaia/eval/webapp/node_modules/get-proto/LICENSE +0 -21
- gaia/eval/webapp/node_modules/get-proto/Object.getPrototypeOf.d.ts +0 -5
- gaia/eval/webapp/node_modules/get-proto/Object.getPrototypeOf.js +0 -6
- gaia/eval/webapp/node_modules/get-proto/README.md +0 -50
- gaia/eval/webapp/node_modules/get-proto/Reflect.getPrototypeOf.d.ts +0 -3
- gaia/eval/webapp/node_modules/get-proto/Reflect.getPrototypeOf.js +0 -4
- gaia/eval/webapp/node_modules/get-proto/index.d.ts +0 -5
- gaia/eval/webapp/node_modules/get-proto/index.js +0 -27
- gaia/eval/webapp/node_modules/get-proto/package.json +0 -81
- gaia/eval/webapp/node_modules/get-proto/test/index.js +0 -68
- gaia/eval/webapp/node_modules/get-proto/tsconfig.json +0 -9
- gaia/eval/webapp/node_modules/gopd/.eslintrc +0 -16
- gaia/eval/webapp/node_modules/gopd/.github/FUNDING.yml +0 -12
- gaia/eval/webapp/node_modules/gopd/CHANGELOG.md +0 -45
- gaia/eval/webapp/node_modules/gopd/LICENSE +0 -21
- gaia/eval/webapp/node_modules/gopd/README.md +0 -40
- gaia/eval/webapp/node_modules/gopd/gOPD.d.ts +0 -1
- gaia/eval/webapp/node_modules/gopd/gOPD.js +0 -4
- gaia/eval/webapp/node_modules/gopd/index.d.ts +0 -5
- gaia/eval/webapp/node_modules/gopd/index.js +0 -15
- gaia/eval/webapp/node_modules/gopd/package.json +0 -77
- gaia/eval/webapp/node_modules/gopd/test/index.js +0 -36
- gaia/eval/webapp/node_modules/gopd/tsconfig.json +0 -9
- gaia/eval/webapp/node_modules/has-symbols/.eslintrc +0 -11
- gaia/eval/webapp/node_modules/has-symbols/.github/FUNDING.yml +0 -12
- gaia/eval/webapp/node_modules/has-symbols/.nycrc +0 -9
- gaia/eval/webapp/node_modules/has-symbols/CHANGELOG.md +0 -91
- gaia/eval/webapp/node_modules/has-symbols/LICENSE +0 -21
- gaia/eval/webapp/node_modules/has-symbols/README.md +0 -46
- gaia/eval/webapp/node_modules/has-symbols/index.d.ts +0 -3
- gaia/eval/webapp/node_modules/has-symbols/index.js +0 -14
- gaia/eval/webapp/node_modules/has-symbols/package.json +0 -111
- gaia/eval/webapp/node_modules/has-symbols/shams.d.ts +0 -3
- gaia/eval/webapp/node_modules/has-symbols/shams.js +0 -45
- gaia/eval/webapp/node_modules/has-symbols/test/index.js +0 -22
- gaia/eval/webapp/node_modules/has-symbols/test/shams/core-js.js +0 -29
- gaia/eval/webapp/node_modules/has-symbols/test/shams/get-own-property-symbols.js +0 -29
- gaia/eval/webapp/node_modules/has-symbols/test/tests.js +0 -58
- gaia/eval/webapp/node_modules/has-symbols/tsconfig.json +0 -10
- gaia/eval/webapp/node_modules/hasown/.eslintrc +0 -5
- gaia/eval/webapp/node_modules/hasown/.github/FUNDING.yml +0 -12
- gaia/eval/webapp/node_modules/hasown/.nycrc +0 -13
- gaia/eval/webapp/node_modules/hasown/CHANGELOG.md +0 -40
- gaia/eval/webapp/node_modules/hasown/LICENSE +0 -21
- gaia/eval/webapp/node_modules/hasown/README.md +0 -40
- gaia/eval/webapp/node_modules/hasown/index.d.ts +0 -3
- gaia/eval/webapp/node_modules/hasown/index.js +0 -8
- gaia/eval/webapp/node_modules/hasown/package.json +0 -92
- gaia/eval/webapp/node_modules/hasown/tsconfig.json +0 -6
- gaia/eval/webapp/node_modules/http-errors/HISTORY.md +0 -180
- gaia/eval/webapp/node_modules/http-errors/LICENSE +0 -23
- gaia/eval/webapp/node_modules/http-errors/README.md +0 -169
- gaia/eval/webapp/node_modules/http-errors/index.js +0 -289
- gaia/eval/webapp/node_modules/http-errors/package.json +0 -50
- gaia/eval/webapp/node_modules/iconv-lite/Changelog.md +0 -162
- gaia/eval/webapp/node_modules/iconv-lite/LICENSE +0 -21
- gaia/eval/webapp/node_modules/iconv-lite/README.md +0 -156
- gaia/eval/webapp/node_modules/iconv-lite/encodings/dbcs-codec.js +0 -555
- gaia/eval/webapp/node_modules/iconv-lite/encodings/dbcs-data.js +0 -176
- gaia/eval/webapp/node_modules/iconv-lite/encodings/index.js +0 -22
- gaia/eval/webapp/node_modules/iconv-lite/encodings/internal.js +0 -188
- gaia/eval/webapp/node_modules/iconv-lite/encodings/sbcs-codec.js +0 -72
- gaia/eval/webapp/node_modules/iconv-lite/encodings/sbcs-data-generated.js +0 -451
- gaia/eval/webapp/node_modules/iconv-lite/encodings/sbcs-data.js +0 -174
- gaia/eval/webapp/node_modules/iconv-lite/encodings/tables/big5-added.json +0 -122
- gaia/eval/webapp/node_modules/iconv-lite/encodings/tables/cp936.json +0 -264
- gaia/eval/webapp/node_modules/iconv-lite/encodings/tables/cp949.json +0 -273
- gaia/eval/webapp/node_modules/iconv-lite/encodings/tables/cp950.json +0 -177
- gaia/eval/webapp/node_modules/iconv-lite/encodings/tables/eucjp.json +0 -182
- gaia/eval/webapp/node_modules/iconv-lite/encodings/tables/gb18030-ranges.json +0 -1
- gaia/eval/webapp/node_modules/iconv-lite/encodings/tables/gbk-added.json +0 -55
- gaia/eval/webapp/node_modules/iconv-lite/encodings/tables/shiftjis.json +0 -125
- gaia/eval/webapp/node_modules/iconv-lite/encodings/utf16.js +0 -177
- gaia/eval/webapp/node_modules/iconv-lite/encodings/utf7.js +0 -290
- gaia/eval/webapp/node_modules/iconv-lite/lib/bom-handling.js +0 -52
- gaia/eval/webapp/node_modules/iconv-lite/lib/extend-node.js +0 -217
- gaia/eval/webapp/node_modules/iconv-lite/lib/index.d.ts +0 -24
- gaia/eval/webapp/node_modules/iconv-lite/lib/index.js +0 -153
- gaia/eval/webapp/node_modules/iconv-lite/lib/streams.js +0 -121
- gaia/eval/webapp/node_modules/iconv-lite/package.json +0 -46
- gaia/eval/webapp/node_modules/inherits/LICENSE +0 -16
- gaia/eval/webapp/node_modules/inherits/README.md +0 -42
- gaia/eval/webapp/node_modules/inherits/inherits.js +0 -9
- gaia/eval/webapp/node_modules/inherits/inherits_browser.js +0 -27
- gaia/eval/webapp/node_modules/inherits/package.json +0 -29
- gaia/eval/webapp/node_modules/ipaddr.js/LICENSE +0 -19
- gaia/eval/webapp/node_modules/ipaddr.js/README.md +0 -233
- gaia/eval/webapp/node_modules/ipaddr.js/ipaddr.min.js +0 -1
- gaia/eval/webapp/node_modules/ipaddr.js/lib/ipaddr.js +0 -673
- gaia/eval/webapp/node_modules/ipaddr.js/lib/ipaddr.js.d.ts +0 -68
- gaia/eval/webapp/node_modules/ipaddr.js/package.json +0 -35
- gaia/eval/webapp/node_modules/math-intrinsics/.eslintrc +0 -16
- gaia/eval/webapp/node_modules/math-intrinsics/.github/FUNDING.yml +0 -12
- gaia/eval/webapp/node_modules/math-intrinsics/CHANGELOG.md +0 -24
- gaia/eval/webapp/node_modules/math-intrinsics/LICENSE +0 -21
- gaia/eval/webapp/node_modules/math-intrinsics/README.md +0 -50
- gaia/eval/webapp/node_modules/math-intrinsics/abs.d.ts +0 -1
- gaia/eval/webapp/node_modules/math-intrinsics/abs.js +0 -4
- gaia/eval/webapp/node_modules/math-intrinsics/constants/maxArrayLength.d.ts +0 -3
- gaia/eval/webapp/node_modules/math-intrinsics/constants/maxArrayLength.js +0 -4
- gaia/eval/webapp/node_modules/math-intrinsics/constants/maxSafeInteger.d.ts +0 -3
- gaia/eval/webapp/node_modules/math-intrinsics/constants/maxSafeInteger.js +0 -5
- gaia/eval/webapp/node_modules/math-intrinsics/constants/maxValue.d.ts +0 -3
- gaia/eval/webapp/node_modules/math-intrinsics/constants/maxValue.js +0 -5
- gaia/eval/webapp/node_modules/math-intrinsics/floor.d.ts +0 -1
- gaia/eval/webapp/node_modules/math-intrinsics/floor.js +0 -4
- gaia/eval/webapp/node_modules/math-intrinsics/isFinite.d.ts +0 -3
- gaia/eval/webapp/node_modules/math-intrinsics/isFinite.js +0 -12
- gaia/eval/webapp/node_modules/math-intrinsics/isInteger.d.ts +0 -3
- gaia/eval/webapp/node_modules/math-intrinsics/isInteger.js +0 -16
- gaia/eval/webapp/node_modules/math-intrinsics/isNaN.d.ts +0 -1
- gaia/eval/webapp/node_modules/math-intrinsics/isNaN.js +0 -6
- gaia/eval/webapp/node_modules/math-intrinsics/isNegativeZero.d.ts +0 -3
- gaia/eval/webapp/node_modules/math-intrinsics/isNegativeZero.js +0 -6
- gaia/eval/webapp/node_modules/math-intrinsics/max.d.ts +0 -1
- gaia/eval/webapp/node_modules/math-intrinsics/max.js +0 -4
- gaia/eval/webapp/node_modules/math-intrinsics/min.d.ts +0 -1
- gaia/eval/webapp/node_modules/math-intrinsics/min.js +0 -4
- gaia/eval/webapp/node_modules/math-intrinsics/mod.d.ts +0 -3
- gaia/eval/webapp/node_modules/math-intrinsics/mod.js +0 -9
- gaia/eval/webapp/node_modules/math-intrinsics/package.json +0 -86
- gaia/eval/webapp/node_modules/math-intrinsics/pow.d.ts +0 -1
- gaia/eval/webapp/node_modules/math-intrinsics/pow.js +0 -4
- gaia/eval/webapp/node_modules/math-intrinsics/round.d.ts +0 -1
- gaia/eval/webapp/node_modules/math-intrinsics/round.js +0 -4
- gaia/eval/webapp/node_modules/math-intrinsics/sign.d.ts +0 -3
- gaia/eval/webapp/node_modules/math-intrinsics/sign.js +0 -11
- gaia/eval/webapp/node_modules/math-intrinsics/test/index.js +0 -192
- gaia/eval/webapp/node_modules/math-intrinsics/tsconfig.json +0 -3
- gaia/eval/webapp/node_modules/media-typer/HISTORY.md +0 -22
- gaia/eval/webapp/node_modules/media-typer/LICENSE +0 -22
- gaia/eval/webapp/node_modules/media-typer/README.md +0 -81
- gaia/eval/webapp/node_modules/media-typer/index.js +0 -270
- gaia/eval/webapp/node_modules/media-typer/package.json +0 -26
- gaia/eval/webapp/node_modules/merge-descriptors/HISTORY.md +0 -21
- gaia/eval/webapp/node_modules/merge-descriptors/LICENSE +0 -23
- gaia/eval/webapp/node_modules/merge-descriptors/README.md +0 -49
- gaia/eval/webapp/node_modules/merge-descriptors/index.js +0 -60
- gaia/eval/webapp/node_modules/merge-descriptors/package.json +0 -39
- gaia/eval/webapp/node_modules/methods/HISTORY.md +0 -29
- gaia/eval/webapp/node_modules/methods/LICENSE +0 -24
- gaia/eval/webapp/node_modules/methods/README.md +0 -51
- gaia/eval/webapp/node_modules/methods/index.js +0 -69
- gaia/eval/webapp/node_modules/methods/package.json +0 -36
- gaia/eval/webapp/node_modules/mime/.npmignore +0 -0
- gaia/eval/webapp/node_modules/mime/CHANGELOG.md +0 -164
- gaia/eval/webapp/node_modules/mime/LICENSE +0 -21
- gaia/eval/webapp/node_modules/mime/README.md +0 -90
- gaia/eval/webapp/node_modules/mime/cli.js +0 -8
- gaia/eval/webapp/node_modules/mime/mime.js +0 -108
- gaia/eval/webapp/node_modules/mime/package.json +0 -44
- gaia/eval/webapp/node_modules/mime/src/build.js +0 -53
- gaia/eval/webapp/node_modules/mime/src/test.js +0 -60
- gaia/eval/webapp/node_modules/mime/types.json +0 -1
- gaia/eval/webapp/node_modules/mime-db/HISTORY.md +0 -507
- gaia/eval/webapp/node_modules/mime-db/LICENSE +0 -23
- gaia/eval/webapp/node_modules/mime-db/README.md +0 -100
- gaia/eval/webapp/node_modules/mime-db/db.json +0 -8519
- gaia/eval/webapp/node_modules/mime-db/index.js +0 -12
- gaia/eval/webapp/node_modules/mime-db/package.json +0 -60
- gaia/eval/webapp/node_modules/mime-types/HISTORY.md +0 -397
- gaia/eval/webapp/node_modules/mime-types/LICENSE +0 -23
- gaia/eval/webapp/node_modules/mime-types/README.md +0 -113
- gaia/eval/webapp/node_modules/mime-types/index.js +0 -188
- gaia/eval/webapp/node_modules/mime-types/package.json +0 -44
- gaia/eval/webapp/node_modules/ms/index.js +0 -152
- gaia/eval/webapp/node_modules/ms/license.md +0 -21
- gaia/eval/webapp/node_modules/ms/package.json +0 -37
- gaia/eval/webapp/node_modules/ms/readme.md +0 -51
- gaia/eval/webapp/node_modules/negotiator/HISTORY.md +0 -108
- gaia/eval/webapp/node_modules/negotiator/LICENSE +0 -24
- gaia/eval/webapp/node_modules/negotiator/README.md +0 -203
- gaia/eval/webapp/node_modules/negotiator/index.js +0 -82
- gaia/eval/webapp/node_modules/negotiator/lib/charset.js +0 -169
- gaia/eval/webapp/node_modules/negotiator/lib/encoding.js +0 -184
- gaia/eval/webapp/node_modules/negotiator/lib/language.js +0 -179
- gaia/eval/webapp/node_modules/negotiator/lib/mediaType.js +0 -294
- gaia/eval/webapp/node_modules/negotiator/package.json +0 -42
- gaia/eval/webapp/node_modules/object-inspect/.eslintrc +0 -53
- gaia/eval/webapp/node_modules/object-inspect/.github/FUNDING.yml +0 -12
- gaia/eval/webapp/node_modules/object-inspect/.nycrc +0 -13
- gaia/eval/webapp/node_modules/object-inspect/CHANGELOG.md +0 -424
- gaia/eval/webapp/node_modules/object-inspect/LICENSE +0 -21
- gaia/eval/webapp/node_modules/object-inspect/example/all.js +0 -23
- gaia/eval/webapp/node_modules/object-inspect/example/circular.js +0 -6
- gaia/eval/webapp/node_modules/object-inspect/example/fn.js +0 -5
- gaia/eval/webapp/node_modules/object-inspect/example/inspect.js +0 -10
- gaia/eval/webapp/node_modules/object-inspect/index.js +0 -544
- gaia/eval/webapp/node_modules/object-inspect/package-support.json +0 -20
- gaia/eval/webapp/node_modules/object-inspect/package.json +0 -105
- gaia/eval/webapp/node_modules/object-inspect/readme.markdown +0 -84
- gaia/eval/webapp/node_modules/object-inspect/test/bigint.js +0 -58
- gaia/eval/webapp/node_modules/object-inspect/test/browser/dom.js +0 -15
- gaia/eval/webapp/node_modules/object-inspect/test/circular.js +0 -16
- gaia/eval/webapp/node_modules/object-inspect/test/deep.js +0 -12
- gaia/eval/webapp/node_modules/object-inspect/test/element.js +0 -53
- gaia/eval/webapp/node_modules/object-inspect/test/err.js +0 -48
- gaia/eval/webapp/node_modules/object-inspect/test/fakes.js +0 -29
- gaia/eval/webapp/node_modules/object-inspect/test/fn.js +0 -76
- gaia/eval/webapp/node_modules/object-inspect/test/global.js +0 -17
- gaia/eval/webapp/node_modules/object-inspect/test/has.js +0 -15
- gaia/eval/webapp/node_modules/object-inspect/test/holes.js +0 -15
- gaia/eval/webapp/node_modules/object-inspect/test/indent-option.js +0 -271
- gaia/eval/webapp/node_modules/object-inspect/test/inspect.js +0 -139
- gaia/eval/webapp/node_modules/object-inspect/test/lowbyte.js +0 -12
- gaia/eval/webapp/node_modules/object-inspect/test/number.js +0 -58
- gaia/eval/webapp/node_modules/object-inspect/test/quoteStyle.js +0 -26
- gaia/eval/webapp/node_modules/object-inspect/test/toStringTag.js +0 -40
- gaia/eval/webapp/node_modules/object-inspect/test/undef.js +0 -12
- gaia/eval/webapp/node_modules/object-inspect/test/values.js +0 -261
- gaia/eval/webapp/node_modules/object-inspect/test-core-js.js +0 -26
- gaia/eval/webapp/node_modules/object-inspect/util.inspect.js +0 -1
- gaia/eval/webapp/node_modules/on-finished/HISTORY.md +0 -98
- gaia/eval/webapp/node_modules/on-finished/LICENSE +0 -23
- gaia/eval/webapp/node_modules/on-finished/README.md +0 -162
- gaia/eval/webapp/node_modules/on-finished/index.js +0 -234
- gaia/eval/webapp/node_modules/on-finished/package.json +0 -39
- gaia/eval/webapp/node_modules/parseurl/HISTORY.md +0 -58
- gaia/eval/webapp/node_modules/parseurl/LICENSE +0 -24
- gaia/eval/webapp/node_modules/parseurl/README.md +0 -133
- gaia/eval/webapp/node_modules/parseurl/index.js +0 -158
- gaia/eval/webapp/node_modules/parseurl/package.json +0 -40
- gaia/eval/webapp/node_modules/path/.npmignore +0 -1
- gaia/eval/webapp/node_modules/path/LICENSE +0 -18
- gaia/eval/webapp/node_modules/path/README.md +0 -15
- gaia/eval/webapp/node_modules/path/package.json +0 -24
- gaia/eval/webapp/node_modules/path/path.js +0 -628
- gaia/eval/webapp/node_modules/path-to-regexp/LICENSE +0 -21
- gaia/eval/webapp/node_modules/path-to-regexp/Readme.md +0 -35
- gaia/eval/webapp/node_modules/path-to-regexp/index.js +0 -156
- gaia/eval/webapp/node_modules/path-to-regexp/package.json +0 -30
- gaia/eval/webapp/node_modules/process/.eslintrc +0 -21
- gaia/eval/webapp/node_modules/process/LICENSE +0 -22
- gaia/eval/webapp/node_modules/process/README.md +0 -26
- gaia/eval/webapp/node_modules/process/browser.js +0 -184
- gaia/eval/webapp/node_modules/process/index.js +0 -2
- gaia/eval/webapp/node_modules/process/package.json +0 -27
- gaia/eval/webapp/node_modules/process/test.js +0 -199
- gaia/eval/webapp/node_modules/proxy-addr/HISTORY.md +0 -161
- gaia/eval/webapp/node_modules/proxy-addr/LICENSE +0 -22
- gaia/eval/webapp/node_modules/proxy-addr/README.md +0 -139
- gaia/eval/webapp/node_modules/proxy-addr/index.js +0 -327
- gaia/eval/webapp/node_modules/proxy-addr/package.json +0 -47
- gaia/eval/webapp/node_modules/qs/.editorconfig +0 -46
- gaia/eval/webapp/node_modules/qs/.eslintrc +0 -38
- gaia/eval/webapp/node_modules/qs/.github/FUNDING.yml +0 -12
- gaia/eval/webapp/node_modules/qs/.nycrc +0 -13
- gaia/eval/webapp/node_modules/qs/CHANGELOG.md +0 -600
- gaia/eval/webapp/node_modules/qs/LICENSE.md +0 -29
- gaia/eval/webapp/node_modules/qs/README.md +0 -709
- gaia/eval/webapp/node_modules/qs/dist/qs.js +0 -90
- gaia/eval/webapp/node_modules/qs/lib/formats.js +0 -23
- gaia/eval/webapp/node_modules/qs/lib/index.js +0 -11
- gaia/eval/webapp/node_modules/qs/lib/parse.js +0 -296
- gaia/eval/webapp/node_modules/qs/lib/stringify.js +0 -351
- gaia/eval/webapp/node_modules/qs/lib/utils.js +0 -265
- gaia/eval/webapp/node_modules/qs/package.json +0 -91
- gaia/eval/webapp/node_modules/qs/test/empty-keys-cases.js +0 -267
- gaia/eval/webapp/node_modules/qs/test/parse.js +0 -1170
- gaia/eval/webapp/node_modules/qs/test/stringify.js +0 -1298
- gaia/eval/webapp/node_modules/qs/test/utils.js +0 -136
- gaia/eval/webapp/node_modules/range-parser/HISTORY.md +0 -56
- gaia/eval/webapp/node_modules/range-parser/LICENSE +0 -23
- gaia/eval/webapp/node_modules/range-parser/README.md +0 -84
- gaia/eval/webapp/node_modules/range-parser/index.js +0 -162
- gaia/eval/webapp/node_modules/range-parser/package.json +0 -44
- gaia/eval/webapp/node_modules/raw-body/HISTORY.md +0 -308
- gaia/eval/webapp/node_modules/raw-body/LICENSE +0 -22
- gaia/eval/webapp/node_modules/raw-body/README.md +0 -223
- gaia/eval/webapp/node_modules/raw-body/SECURITY.md +0 -24
- gaia/eval/webapp/node_modules/raw-body/index.d.ts +0 -87
- gaia/eval/webapp/node_modules/raw-body/index.js +0 -336
- gaia/eval/webapp/node_modules/raw-body/package.json +0 -49
- gaia/eval/webapp/node_modules/safe-buffer/LICENSE +0 -21
- gaia/eval/webapp/node_modules/safe-buffer/README.md +0 -584
- gaia/eval/webapp/node_modules/safe-buffer/index.d.ts +0 -187
- gaia/eval/webapp/node_modules/safe-buffer/index.js +0 -65
- gaia/eval/webapp/node_modules/safe-buffer/package.json +0 -51
- gaia/eval/webapp/node_modules/safer-buffer/LICENSE +0 -21
- gaia/eval/webapp/node_modules/safer-buffer/Porting-Buffer.md +0 -268
- gaia/eval/webapp/node_modules/safer-buffer/Readme.md +0 -156
- gaia/eval/webapp/node_modules/safer-buffer/dangerous.js +0 -58
- gaia/eval/webapp/node_modules/safer-buffer/package.json +0 -34
- gaia/eval/webapp/node_modules/safer-buffer/safer.js +0 -77
- gaia/eval/webapp/node_modules/safer-buffer/tests.js +0 -406
- gaia/eval/webapp/node_modules/send/HISTORY.md +0 -526
- gaia/eval/webapp/node_modules/send/LICENSE +0 -23
- gaia/eval/webapp/node_modules/send/README.md +0 -327
- gaia/eval/webapp/node_modules/send/SECURITY.md +0 -24
- gaia/eval/webapp/node_modules/send/index.js +0 -1142
- gaia/eval/webapp/node_modules/send/node_modules/encodeurl/HISTORY.md +0 -14
- gaia/eval/webapp/node_modules/send/node_modules/encodeurl/LICENSE +0 -22
- gaia/eval/webapp/node_modules/send/node_modules/encodeurl/README.md +0 -128
- gaia/eval/webapp/node_modules/send/node_modules/encodeurl/index.js +0 -60
- gaia/eval/webapp/node_modules/send/node_modules/encodeurl/package.json +0 -40
- gaia/eval/webapp/node_modules/send/node_modules/ms/index.js +0 -162
- gaia/eval/webapp/node_modules/send/node_modules/ms/license.md +0 -21
- gaia/eval/webapp/node_modules/send/node_modules/ms/package.json +0 -38
- gaia/eval/webapp/node_modules/send/node_modules/ms/readme.md +0 -59
- gaia/eval/webapp/node_modules/send/package.json +0 -62
- gaia/eval/webapp/node_modules/serve-static/HISTORY.md +0 -487
- gaia/eval/webapp/node_modules/serve-static/LICENSE +0 -25
- gaia/eval/webapp/node_modules/serve-static/README.md +0 -257
- gaia/eval/webapp/node_modules/serve-static/index.js +0 -209
- gaia/eval/webapp/node_modules/serve-static/package.json +0 -42
- gaia/eval/webapp/node_modules/setprototypeof/LICENSE +0 -13
- gaia/eval/webapp/node_modules/setprototypeof/README.md +0 -31
- gaia/eval/webapp/node_modules/setprototypeof/index.d.ts +0 -2
- gaia/eval/webapp/node_modules/setprototypeof/index.js +0 -17
- gaia/eval/webapp/node_modules/setprototypeof/package.json +0 -38
- gaia/eval/webapp/node_modules/setprototypeof/test/index.js +0 -24
- gaia/eval/webapp/node_modules/side-channel/.editorconfig +0 -9
- gaia/eval/webapp/node_modules/side-channel/.eslintrc +0 -12
- gaia/eval/webapp/node_modules/side-channel/.github/FUNDING.yml +0 -12
- gaia/eval/webapp/node_modules/side-channel/.nycrc +0 -13
- gaia/eval/webapp/node_modules/side-channel/CHANGELOG.md +0 -110
- gaia/eval/webapp/node_modules/side-channel/LICENSE +0 -21
- gaia/eval/webapp/node_modules/side-channel/README.md +0 -61
- gaia/eval/webapp/node_modules/side-channel/index.d.ts +0 -14
- gaia/eval/webapp/node_modules/side-channel/index.js +0 -43
- gaia/eval/webapp/node_modules/side-channel/package.json +0 -85
- gaia/eval/webapp/node_modules/side-channel/test/index.js +0 -104
- gaia/eval/webapp/node_modules/side-channel/tsconfig.json +0 -9
- gaia/eval/webapp/node_modules/side-channel-list/.editorconfig +0 -9
- gaia/eval/webapp/node_modules/side-channel-list/.eslintrc +0 -11
- gaia/eval/webapp/node_modules/side-channel-list/.github/FUNDING.yml +0 -12
- gaia/eval/webapp/node_modules/side-channel-list/.nycrc +0 -13
- gaia/eval/webapp/node_modules/side-channel-list/CHANGELOG.md +0 -15
- gaia/eval/webapp/node_modules/side-channel-list/LICENSE +0 -21
- gaia/eval/webapp/node_modules/side-channel-list/README.md +0 -62
- gaia/eval/webapp/node_modules/side-channel-list/index.d.ts +0 -13
- gaia/eval/webapp/node_modules/side-channel-list/index.js +0 -113
- gaia/eval/webapp/node_modules/side-channel-list/list.d.ts +0 -14
- gaia/eval/webapp/node_modules/side-channel-list/package.json +0 -77
- gaia/eval/webapp/node_modules/side-channel-list/test/index.js +0 -104
- gaia/eval/webapp/node_modules/side-channel-list/tsconfig.json +0 -9
- gaia/eval/webapp/node_modules/side-channel-map/.editorconfig +0 -9
- gaia/eval/webapp/node_modules/side-channel-map/.eslintrc +0 -11
- gaia/eval/webapp/node_modules/side-channel-map/.github/FUNDING.yml +0 -12
- gaia/eval/webapp/node_modules/side-channel-map/.nycrc +0 -13
- gaia/eval/webapp/node_modules/side-channel-map/CHANGELOG.md +0 -22
- gaia/eval/webapp/node_modules/side-channel-map/LICENSE +0 -21
- gaia/eval/webapp/node_modules/side-channel-map/README.md +0 -62
- gaia/eval/webapp/node_modules/side-channel-map/index.d.ts +0 -15
- gaia/eval/webapp/node_modules/side-channel-map/index.js +0 -68
- gaia/eval/webapp/node_modules/side-channel-map/package.json +0 -80
- gaia/eval/webapp/node_modules/side-channel-map/test/index.js +0 -114
- gaia/eval/webapp/node_modules/side-channel-map/tsconfig.json +0 -9
- gaia/eval/webapp/node_modules/side-channel-weakmap/.editorconfig +0 -9
- gaia/eval/webapp/node_modules/side-channel-weakmap/.eslintrc +0 -12
- gaia/eval/webapp/node_modules/side-channel-weakmap/.github/FUNDING.yml +0 -12
- gaia/eval/webapp/node_modules/side-channel-weakmap/.nycrc +0 -13
- gaia/eval/webapp/node_modules/side-channel-weakmap/CHANGELOG.md +0 -28
- gaia/eval/webapp/node_modules/side-channel-weakmap/LICENSE +0 -21
- gaia/eval/webapp/node_modules/side-channel-weakmap/README.md +0 -62
- gaia/eval/webapp/node_modules/side-channel-weakmap/index.d.ts +0 -15
- gaia/eval/webapp/node_modules/side-channel-weakmap/index.js +0 -84
- gaia/eval/webapp/node_modules/side-channel-weakmap/package.json +0 -87
- gaia/eval/webapp/node_modules/side-channel-weakmap/test/index.js +0 -114
- gaia/eval/webapp/node_modules/side-channel-weakmap/tsconfig.json +0 -9
- gaia/eval/webapp/node_modules/statuses/HISTORY.md +0 -82
- gaia/eval/webapp/node_modules/statuses/LICENSE +0 -23
- gaia/eval/webapp/node_modules/statuses/README.md +0 -136
- gaia/eval/webapp/node_modules/statuses/codes.json +0 -65
- gaia/eval/webapp/node_modules/statuses/index.js +0 -146
- gaia/eval/webapp/node_modules/statuses/package.json +0 -49
- gaia/eval/webapp/node_modules/toidentifier/HISTORY.md +0 -9
- gaia/eval/webapp/node_modules/toidentifier/LICENSE +0 -21
- gaia/eval/webapp/node_modules/toidentifier/README.md +0 -61
- gaia/eval/webapp/node_modules/toidentifier/index.js +0 -32
- gaia/eval/webapp/node_modules/toidentifier/package.json +0 -38
- gaia/eval/webapp/node_modules/type-is/HISTORY.md +0 -259
- gaia/eval/webapp/node_modules/type-is/LICENSE +0 -23
- gaia/eval/webapp/node_modules/type-is/README.md +0 -170
- gaia/eval/webapp/node_modules/type-is/index.js +0 -266
- gaia/eval/webapp/node_modules/type-is/package.json +0 -45
- gaia/eval/webapp/node_modules/unpipe/HISTORY.md +0 -4
- gaia/eval/webapp/node_modules/unpipe/LICENSE +0 -22
- gaia/eval/webapp/node_modules/unpipe/README.md +0 -43
- gaia/eval/webapp/node_modules/unpipe/index.js +0 -69
- gaia/eval/webapp/node_modules/unpipe/package.json +0 -27
- gaia/eval/webapp/node_modules/util/LICENSE +0 -18
- gaia/eval/webapp/node_modules/util/README.md +0 -15
- gaia/eval/webapp/node_modules/util/node_modules/inherits/LICENSE +0 -16
- gaia/eval/webapp/node_modules/util/node_modules/inherits/README.md +0 -42
- gaia/eval/webapp/node_modules/util/node_modules/inherits/inherits.js +0 -7
- gaia/eval/webapp/node_modules/util/node_modules/inherits/inherits_browser.js +0 -23
- gaia/eval/webapp/node_modules/util/node_modules/inherits/package.json +0 -29
- gaia/eval/webapp/node_modules/util/package.json +0 -35
- gaia/eval/webapp/node_modules/util/support/isBuffer.js +0 -3
- gaia/eval/webapp/node_modules/util/support/isBufferBrowser.js +0 -6
- gaia/eval/webapp/node_modules/util/util.js +0 -586
- gaia/eval/webapp/node_modules/utils-merge/.npmignore +0 -9
- gaia/eval/webapp/node_modules/utils-merge/LICENSE +0 -20
- gaia/eval/webapp/node_modules/utils-merge/README.md +0 -34
- gaia/eval/webapp/node_modules/utils-merge/index.js +0 -23
- gaia/eval/webapp/node_modules/utils-merge/package.json +0 -40
- gaia/eval/webapp/node_modules/vary/HISTORY.md +0 -39
- gaia/eval/webapp/node_modules/vary/LICENSE +0 -22
- gaia/eval/webapp/node_modules/vary/README.md +0 -101
- gaia/eval/webapp/node_modules/vary/index.js +0 -149
- gaia/eval/webapp/node_modules/vary/package.json +0 -43
- {amd_gaia-0.14.1.dist-info → amd_gaia-0.14.3.dist-info}/WHEEL +0 -0
- {amd_gaia-0.14.1.dist-info → amd_gaia-0.14.3.dist-info}/licenses/LICENSE.md +0 -0
- {amd_gaia-0.14.1.dist-info → amd_gaia-0.14.3.dist-info}/top_level.txt +0 -0
gaia/agents/code/agent.py
CHANGED
|
@@ -332,7 +332,9 @@ class CodeAgent(
|
|
|
332
332
|
logger.error(f"Failed to write trace file: {e}")
|
|
333
333
|
|
|
334
334
|
# Return dict matching app.py's expected format
|
|
335
|
-
project_dir =
|
|
335
|
+
project_dir = execution_result.outputs.get(
|
|
336
|
+
"project_dir", workspace_root or os.getcwd()
|
|
337
|
+
)
|
|
336
338
|
return {
|
|
337
339
|
"status": "success" if execution_result.success else "error",
|
|
338
340
|
"result": execution_result.summary,
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# Copyright(C)
|
|
1
|
+
# Copyright(C) 2025-2026 Advanced Micro Devices, Inc. All rights reserved.
|
|
2
2
|
# SPDX-License-Identifier: MIT
|
|
3
3
|
"""Checklist Executor for LLM-Driven Code Generation.
|
|
4
4
|
|
|
@@ -107,6 +107,12 @@ TEMPLATE_METADATA: Dict[str, Dict[str, Any]] = {
|
|
|
107
107
|
],
|
|
108
108
|
"file_pattern": "src/app/{resource}s/[id]/page.tsx",
|
|
109
109
|
},
|
|
110
|
+
"artifact-timer": {
|
|
111
|
+
"requires_client": True,
|
|
112
|
+
"expected_classes": [
|
|
113
|
+
"glass-card",
|
|
114
|
+
],
|
|
115
|
+
},
|
|
110
116
|
},
|
|
111
117
|
"generate_api_route": {
|
|
112
118
|
"collection": {
|
|
@@ -891,6 +897,7 @@ Return raw CSS starting with @tailwind base;"""
|
|
|
891
897
|
APP_GLOBALS_CSS,
|
|
892
898
|
CLIENT_COMPONENT_FORM,
|
|
893
899
|
CLIENT_COMPONENT_NEW_PAGE,
|
|
900
|
+
CLIENT_COMPONENT_TIMER,
|
|
894
901
|
SERVER_COMPONENT_DETAIL,
|
|
895
902
|
SERVER_COMPONENT_LIST,
|
|
896
903
|
)
|
|
@@ -975,6 +982,7 @@ export default function Home() {
|
|
|
975
982
|
"form": CLIENT_COMPONENT_FORM,
|
|
976
983
|
"new": CLIENT_COMPONENT_NEW_PAGE,
|
|
977
984
|
"detail": SERVER_COMPONENT_DETAIL,
|
|
985
|
+
"artifact-timer": CLIENT_COMPONENT_TIMER,
|
|
978
986
|
},
|
|
979
987
|
"generate_api_route": {
|
|
980
988
|
"collection": api_route_collection,
|
|
@@ -1030,6 +1038,12 @@ export default function Home() {
|
|
|
1030
1038
|
|
|
1031
1039
|
if template == "generate_react_component":
|
|
1032
1040
|
variant = params.get("variant", "list")
|
|
1041
|
+
component_name = params.get("component_name")
|
|
1042
|
+
if component_name:
|
|
1043
|
+
safe_name = "".join(
|
|
1044
|
+
ch for ch in component_name if ch.isalnum() or ch == "_"
|
|
1045
|
+
)
|
|
1046
|
+
component_name = safe_name or component_name
|
|
1033
1047
|
|
|
1034
1048
|
if variant == "list":
|
|
1035
1049
|
return f"src/app/{resource}s/page.tsx"
|
|
@@ -1039,7 +1053,12 @@ export default function Home() {
|
|
|
1039
1053
|
return f"src/app/{resource}s/new/page.tsx"
|
|
1040
1054
|
elif variant == "detail":
|
|
1041
1055
|
return f"src/app/{resource}s/[id]/page.tsx"
|
|
1056
|
+
elif variant == "artifact-timer":
|
|
1057
|
+
file_component = component_name or f"{resource_cap}Timer"
|
|
1058
|
+
return f"src/components/{file_component}.tsx"
|
|
1042
1059
|
else:
|
|
1060
|
+
if component_name:
|
|
1061
|
+
return f"src/components/{component_name}.tsx"
|
|
1043
1062
|
return f"src/components/{resource_cap}{variant.capitalize()}.tsx"
|
|
1044
1063
|
|
|
1045
1064
|
elif template == "generate_api_route":
|
|
@@ -1604,12 +1623,15 @@ if (process.env.NODE_ENV !== "production") globalForPrisma.prisma = prisma;
|
|
|
1604
1623
|
variant = template_params.get("variant", "list")
|
|
1605
1624
|
|
|
1606
1625
|
# Generate component_name from resource + variant
|
|
1607
|
-
#
|
|
1626
|
+
# Allow caller to provide an explicit component_name (used for timers)
|
|
1608
1627
|
resource_capitalized = resource.capitalize() if resource else "Item"
|
|
1609
1628
|
variant_capitalized = variant.capitalize() if variant else "List"
|
|
1629
|
+
explicit_component = template_params.get("component_name")
|
|
1610
1630
|
|
|
1611
1631
|
# Build component name based on variant
|
|
1612
|
-
if
|
|
1632
|
+
if explicit_component:
|
|
1633
|
+
component_name = explicit_component
|
|
1634
|
+
elif variant == "list":
|
|
1613
1635
|
component_name = f"{resource_capitalized}List"
|
|
1614
1636
|
elif variant == "form":
|
|
1615
1637
|
component_name = f"{resource_capitalized}Form"
|
|
@@ -1619,6 +1641,8 @@ if (process.env.NODE_ENV !== "production") globalForPrisma.prisma = prisma;
|
|
|
1619
1641
|
component_name = f"{resource_capitalized}Detail"
|
|
1620
1642
|
elif variant == "actions":
|
|
1621
1643
|
component_name = f"{resource_capitalized}Actions"
|
|
1644
|
+
elif variant == "artifact-timer":
|
|
1645
|
+
component_name = f"{resource_capitalized}Timer"
|
|
1622
1646
|
else:
|
|
1623
1647
|
component_name = f"{resource_capitalized}{variant_capitalized}"
|
|
1624
1648
|
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# Copyright(C)
|
|
1
|
+
# Copyright(C) 2025-2026 Advanced Micro Devices, Inc. All rights reserved.
|
|
2
2
|
# SPDX-License-Identifier: MIT
|
|
3
3
|
"""Checklist Generator for LLM-Driven Code Generation.
|
|
4
4
|
|
|
@@ -137,6 +137,8 @@ CHECKLIST_SYSTEM_PROMPT = """You are a code generation planner. Your task is to
|
|
|
137
137
|
5. Ensure dependencies are satisfied (run setup before data, data before API, API before UI)
|
|
138
138
|
6. Generate a complete checklist that creates a working application
|
|
139
139
|
7. When follow-up fixes are requested, use `fix_code` to repair the specific files called out by validation/test logs. Extract the precise file paths and line numbers from the errors (see the Raw Validation Logs) and pass those line numbers inside the error description so the fixer knows exactly where to focus. Always reference the latest findings to decide which fixes to schedule before running validations again.
|
|
140
|
+
8. If the user explicitly requests an additional UI artifact (countdown display, stats badge, etc.), schedule a `generate_react_component` step with the appropriate `artifact-*` variant (e.g., `"artifact-timer"`) and a descriptive `component_name`. Keep the artifact's logic inside that client component—server components like `page.tsx` should only render the artifact and pass any required props.
|
|
141
|
+
9. **Route pairing requirement:** Whenever you schedule `{{"template": "generate_api_route", "params": {{"type": "collection", ...}}}}`, you MUST also include a matching `generate_api_route` item with `"type": "item"` for the same resource so detail pages can call `/api/<resource>/[id]`.
|
|
140
142
|
|
|
141
143
|
This workflow repeats until all validations pass, so each checklist should either advance new functionality or explicitly repair the failures reported in the latest validation logs.
|
|
142
144
|
|
|
@@ -144,12 +146,13 @@ This workflow repeats until all validations pass, so each checklist should eithe
|
|
|
144
146
|
|
|
145
147
|
For any app that manages resources (todos, posts, users, etc.), you MUST generate ALL of these UI components:
|
|
146
148
|
|
|
147
|
-
1. **
|
|
148
|
-
2. **
|
|
149
|
+
1. **Form component** (variant: "form") - Reusable form for create (generate this first so other pages can import it)
|
|
150
|
+
2. **Artifact components** (variant: "artifact-*") - Any additional UI artifacts requested by the user (e.g., countdown display, stats badge). Generate these before any page that consumes them.
|
|
149
151
|
3. **New page** (variant: "new") - Create new item at /resources/new
|
|
150
152
|
4. **Edit page** (variant: "detail") - Edit single item at /resources/[id] with pre-populated form
|
|
153
|
+
5. **List page** (variant: "list") - Main page showing all items at /resources
|
|
151
154
|
|
|
152
|
-
Missing any of
|
|
155
|
+
Missing any of the required components (form, new, detail, list) will result in broken navigation! When artifacts are requested, they must also be generated or the UI will be incomplete.
|
|
153
156
|
|
|
154
157
|
## REQUIRED: Setup and Validation Commands
|
|
155
158
|
|
|
@@ -181,6 +184,7 @@ Important:
|
|
|
181
184
|
- Use exact template names from the catalog
|
|
182
185
|
- Provide all required parameters
|
|
183
186
|
- Order items by dependency (setup first, then data, then API, then UI)
|
|
187
|
+
- REQUIRED ordering for `generate_react_component`: emit all non-`list` variants (form, new, detail, actions, artifact-*) before the `variant: "list"` call so the list can import previously generated components
|
|
184
188
|
- Add semantic enhancements that make the app intuitive (e.g., checkboxes for todos)
|
|
185
189
|
- For CRUD apps, ALWAYS include all 4 UI variants: list, form, new, detail
|
|
186
190
|
- REQUIRED: Include `setup_app_styling` after `create_next_app`
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# Copyright(C)
|
|
1
|
+
# Copyright(C) 2025-2026 Advanced Micro Devices, Inc. All rights reserved.
|
|
2
2
|
# SPDX-License-Identifier: MIT
|
|
3
3
|
"""
|
|
4
4
|
Orchestrator for LLM-driven workflow execution.
|
|
@@ -17,9 +17,11 @@ Features:
|
|
|
17
17
|
|
|
18
18
|
import json
|
|
19
19
|
import logging
|
|
20
|
+
import os
|
|
20
21
|
import re
|
|
21
22
|
import subprocess
|
|
22
23
|
from dataclasses import dataclass, field
|
|
24
|
+
from pathlib import Path
|
|
23
25
|
from typing import Any, Callable, Dict, List, Optional, Protocol
|
|
24
26
|
|
|
25
27
|
from gaia.agents.base.console import AgentConsole
|
|
@@ -30,6 +32,10 @@ from .steps.error_handler import ErrorHandler
|
|
|
30
32
|
logger = logging.getLogger(__name__)
|
|
31
33
|
|
|
32
34
|
|
|
35
|
+
class ProjectDirectoryError(Exception):
|
|
36
|
+
"""Raised when the project directory cannot be prepared safely."""
|
|
37
|
+
|
|
38
|
+
|
|
33
39
|
def _estimate_token_count(text: str) -> int:
|
|
34
40
|
"""Lightweight token estimate assuming ~4 characters per token."""
|
|
35
41
|
avg_chars_per_token = 4
|
|
@@ -198,6 +204,30 @@ class Orchestrator:
|
|
|
198
204
|
steps_failed = 0
|
|
199
205
|
success = False
|
|
200
206
|
|
|
207
|
+
try:
|
|
208
|
+
context.project_dir = self._prepare_project_directory(context)
|
|
209
|
+
except ProjectDirectoryError as exc:
|
|
210
|
+
error_message = str(exc)
|
|
211
|
+
logger.error(error_message)
|
|
212
|
+
if self.console:
|
|
213
|
+
self.console.print_error(error_message)
|
|
214
|
+
return ExecutionResult(
|
|
215
|
+
success=False,
|
|
216
|
+
phases_completed=[],
|
|
217
|
+
phases_failed=["project_directory"],
|
|
218
|
+
total_steps=1,
|
|
219
|
+
steps_succeeded=0,
|
|
220
|
+
steps_failed=1,
|
|
221
|
+
steps_skipped=0,
|
|
222
|
+
errors=[error_message],
|
|
223
|
+
outputs={
|
|
224
|
+
"iterations": [],
|
|
225
|
+
"validation_logs": [],
|
|
226
|
+
"fix_feedback": [],
|
|
227
|
+
"project_dir": context.project_dir,
|
|
228
|
+
},
|
|
229
|
+
)
|
|
230
|
+
|
|
201
231
|
for iteration in range(1, self.max_checklist_loops + 1):
|
|
202
232
|
logger.debug("Starting checklist iteration %d", iteration)
|
|
203
233
|
|
|
@@ -367,6 +397,7 @@ class Orchestrator:
|
|
|
367
397
|
"iterations": iteration_outputs,
|
|
368
398
|
"validation_logs": [log.to_dict() for log in aggregated_validation_logs],
|
|
369
399
|
"fix_feedback": fix_feedback,
|
|
400
|
+
"project_dir": context.project_dir,
|
|
370
401
|
}
|
|
371
402
|
|
|
372
403
|
if latest_execution:
|
|
@@ -445,7 +476,7 @@ class Orchestrator:
|
|
|
445
476
|
)
|
|
446
477
|
|
|
447
478
|
try:
|
|
448
|
-
response = self.llm_client.send(prompt, timeout=1200
|
|
479
|
+
response = self.llm_client.send(prompt, timeout=1200)
|
|
449
480
|
data = self._parse_checkpoint_response(response)
|
|
450
481
|
return CheckpointAssessment(
|
|
451
482
|
status=data.get("status", "needs_fix"),
|
|
@@ -472,7 +503,9 @@ class Orchestrator:
|
|
|
472
503
|
validation_history: List[Any],
|
|
473
504
|
) -> str:
|
|
474
505
|
"""Build the prompt for the checkpoint reviewer."""
|
|
475
|
-
validation_summary = self._format_validation_history(
|
|
506
|
+
validation_summary = self._format_validation_history(
|
|
507
|
+
validation_history, getattr(execution_result, "validation_logs", None)
|
|
508
|
+
)
|
|
476
509
|
|
|
477
510
|
outstanding = (
|
|
478
511
|
"\n".join(f"- {item}" for item in context.fix_feedback)
|
|
@@ -530,52 +563,250 @@ class Orchestrator:
|
|
|
530
563
|
logger.exception("Failed to summarize conversation history: %s", exc)
|
|
531
564
|
return None
|
|
532
565
|
|
|
533
|
-
def
|
|
534
|
-
"""
|
|
535
|
-
|
|
536
|
-
return "No validation or test commands have been executed yet."
|
|
566
|
+
def _prepare_project_directory(self, context: UserContext) -> str:
|
|
567
|
+
"""
|
|
568
|
+
Ensure the project directory is ready for creation workflows.
|
|
537
569
|
|
|
538
|
-
|
|
539
|
-
|
|
540
|
-
|
|
541
|
-
|
|
542
|
-
|
|
543
|
-
|
|
544
|
-
|
|
570
|
+
If the provided path exists and is non-empty without an existing project,
|
|
571
|
+
pick a unique subdirectory via the LLM to avoid create-next-app failures.
|
|
572
|
+
"""
|
|
573
|
+
base_path = Path(context.project_dir).expanduser()
|
|
574
|
+
if base_path.exists() and not base_path.is_dir():
|
|
575
|
+
raise ProjectDirectoryError(
|
|
576
|
+
f"Provided path is not a directory: {base_path}"
|
|
577
|
+
)
|
|
578
|
+
|
|
579
|
+
if not base_path.exists():
|
|
580
|
+
base_path.mkdir(parents=True, exist_ok=True)
|
|
581
|
+
logger.info("Created project directory: %s", base_path)
|
|
582
|
+
return str(base_path)
|
|
583
|
+
|
|
584
|
+
existing_entries = [p.name for p in base_path.iterdir()]
|
|
585
|
+
if not existing_entries:
|
|
586
|
+
return str(base_path)
|
|
587
|
+
|
|
588
|
+
if self.console:
|
|
589
|
+
self.console.print_warning(
|
|
590
|
+
f"Target directory {base_path} is not empty; selecting a new subdirectory."
|
|
591
|
+
)
|
|
592
|
+
|
|
593
|
+
suggested = self._choose_subdirectory_name(
|
|
594
|
+
base_path, existing_entries, context.user_request
|
|
595
|
+
)
|
|
596
|
+
if not suggested:
|
|
597
|
+
raise ProjectDirectoryError(
|
|
598
|
+
f"Unable to find an available project name under {base_path}. "
|
|
599
|
+
"Provide one explicitly with --path."
|
|
600
|
+
)
|
|
601
|
+
|
|
602
|
+
new_dir = base_path / suggested
|
|
603
|
+
new_dir.mkdir(parents=False, exist_ok=False)
|
|
604
|
+
logger.info("Using nested project directory: %s", new_dir)
|
|
605
|
+
# Align process cwd with the newly created project directory.
|
|
606
|
+
try:
|
|
607
|
+
os.chdir(new_dir)
|
|
608
|
+
except OSError as exc:
|
|
609
|
+
logger.warning("Failed to chdir to %s: %s", new_dir, exc)
|
|
610
|
+
if self.console:
|
|
611
|
+
self.console.print_info(f"Using project directory: {new_dir}")
|
|
612
|
+
return str(new_dir)
|
|
613
|
+
|
|
614
|
+
def _choose_subdirectory_name(
|
|
615
|
+
self, base_path: Path, existing_entries: List[str], user_request: str
|
|
616
|
+
) -> Optional[str]:
|
|
617
|
+
"""Ask the LLM for a unique subdirectory name, retrying on conflicts."""
|
|
618
|
+
existing_lower = {name.lower() for name in existing_entries}
|
|
619
|
+
prompt = self._build_directory_prompt(
|
|
620
|
+
base_path, existing_entries, user_request, None
|
|
621
|
+
)
|
|
622
|
+
last_reason = None
|
|
623
|
+
|
|
624
|
+
system_prompt = "You suggest concise folder names for new projects."
|
|
625
|
+
|
|
626
|
+
for attempt in range(1, 4):
|
|
627
|
+
try:
|
|
628
|
+
response = self._send_prompt_without_history(
|
|
629
|
+
prompt, timeout=120, system_prompt=system_prompt
|
|
630
|
+
)
|
|
631
|
+
except Exception as exc: # pylint: disable=broad-exception-caught
|
|
632
|
+
last_reason = f"LLM error on attempt {attempt}: {exc}"
|
|
633
|
+
logger.warning(last_reason)
|
|
634
|
+
prompt = self._build_directory_prompt(
|
|
635
|
+
base_path, existing_entries, user_request, last_reason
|
|
636
|
+
)
|
|
637
|
+
continue
|
|
638
|
+
|
|
639
|
+
raw_response = self._extract_response_text(response)
|
|
640
|
+
candidate = self._sanitize_directory_name(raw_response)
|
|
641
|
+
if not candidate:
|
|
642
|
+
last_reason = "LLM returned an empty or invalid directory name."
|
|
643
|
+
elif candidate.lower() in existing_lower:
|
|
644
|
+
last_reason = f"Name '{candidate}' already exists in {base_path}."
|
|
645
|
+
elif "/" in candidate or "\\" in candidate or ".." in candidate:
|
|
646
|
+
last_reason = "Directory name contained path separators or traversal."
|
|
647
|
+
elif len(candidate) > 64:
|
|
648
|
+
last_reason = "Directory name exceeded 64 characters."
|
|
545
649
|
else:
|
|
546
|
-
|
|
650
|
+
candidate_path = base_path / candidate
|
|
651
|
+
if candidate_path.exists():
|
|
652
|
+
last_reason = f"Directory '{candidate}' already exists."
|
|
653
|
+
else:
|
|
654
|
+
return candidate
|
|
655
|
+
|
|
656
|
+
logger.warning(
|
|
657
|
+
"Directory name attempt %d rejected: %s", attempt, last_reason
|
|
658
|
+
)
|
|
659
|
+
prompt = self._build_directory_prompt(
|
|
660
|
+
base_path, existing_entries, user_request, last_reason
|
|
661
|
+
)
|
|
662
|
+
|
|
663
|
+
return None
|
|
664
|
+
|
|
665
|
+
@staticmethod
|
|
666
|
+
def _sanitize_directory_name(raw: str) -> str:
|
|
667
|
+
"""Normalize LLM output to a filesystem-safe directory name."""
|
|
668
|
+
if not raw:
|
|
669
|
+
return ""
|
|
670
|
+
candidate = raw.strip().strip("`'\"")
|
|
671
|
+
candidate = candidate.splitlines()[0].strip()
|
|
672
|
+
candidate = re.sub(r"[^A-Za-z0-9_-]+", "-", candidate)
|
|
673
|
+
return candidate.strip("-_").lower()
|
|
674
|
+
|
|
675
|
+
def _send_prompt_without_history(
|
|
676
|
+
self, prompt: str, timeout: int = 120, system_prompt: Optional[str] = None
|
|
677
|
+
) -> Any:
|
|
678
|
+
"""
|
|
679
|
+
Send a prompt without reading from or writing to chat history.
|
|
680
|
+
|
|
681
|
+
Prefers the underlying LLM client's `generate` API when available,
|
|
682
|
+
falling back to `send(..., no_history=True)` for compatibility.
|
|
683
|
+
"""
|
|
684
|
+
# If the ChatSDK exposes the underlying LLM client, use it directly with chat messages
|
|
685
|
+
# to avoid any stored history and ensure system prompts are applied cleanly.
|
|
686
|
+
llm_client = getattr(self.llm_client, "llm_client", None)
|
|
687
|
+
if llm_client and hasattr(llm_client, "generate"):
|
|
688
|
+
model = getattr(getattr(self.llm_client, "config", None), "model", None)
|
|
689
|
+
messages = []
|
|
690
|
+
if system_prompt:
|
|
691
|
+
messages.append({"role": "system", "content": system_prompt})
|
|
692
|
+
messages.append({"role": "user", "content": prompt})
|
|
693
|
+
return llm_client.generate(
|
|
694
|
+
prompt=prompt,
|
|
695
|
+
messages=messages,
|
|
696
|
+
model=model,
|
|
697
|
+
timeout=timeout,
|
|
698
|
+
endpoint="chat",
|
|
699
|
+
)
|
|
547
700
|
|
|
548
|
-
|
|
549
|
-
|
|
550
|
-
|
|
701
|
+
# Fallback: use send with no_history to avoid persisting messages.
|
|
702
|
+
if hasattr(self.llm_client, "send"):
|
|
703
|
+
return self.llm_client.send(
|
|
704
|
+
prompt, timeout=timeout, no_history=True, system_prompt=system_prompt
|
|
551
705
|
)
|
|
552
|
-
|
|
553
|
-
|
|
554
|
-
|
|
555
|
-
|
|
556
|
-
|
|
557
|
-
|
|
558
|
-
|
|
559
|
-
|
|
560
|
-
|
|
561
|
-
|
|
562
|
-
|
|
563
|
-
|
|
564
|
-
|
|
565
|
-
|
|
566
|
-
|
|
567
|
-
|
|
568
|
-
|
|
569
|
-
|
|
570
|
-
|
|
571
|
-
|
|
572
|
-
|
|
573
|
-
|
|
574
|
-
|
|
575
|
-
|
|
576
|
-
|
|
577
|
-
|
|
578
|
-
|
|
706
|
+
|
|
707
|
+
raise ValueError("LLM client does not support generate or send APIs")
|
|
708
|
+
|
|
709
|
+
@staticmethod
|
|
710
|
+
def _build_directory_prompt(
|
|
711
|
+
base_path: Path,
|
|
712
|
+
existing_entries: List[str],
|
|
713
|
+
user_request: Optional[str],
|
|
714
|
+
rejection_reason: Optional[str],
|
|
715
|
+
) -> str:
|
|
716
|
+
"""Construct the LLM prompt for picking a safe project subdirectory."""
|
|
717
|
+
entries = sorted(existing_entries)
|
|
718
|
+
max_list = 50
|
|
719
|
+
if len(entries) > max_list:
|
|
720
|
+
entries_display = "\n".join(f"- {name}" for name in entries[:max_list])
|
|
721
|
+
entries_display += f"\n- ...and {len(entries) - max_list} more"
|
|
722
|
+
else:
|
|
723
|
+
entries_display = "\n".join(f"- {name}" for name in entries)
|
|
724
|
+
|
|
725
|
+
prompt_sections = [
|
|
726
|
+
"You must choose a new folder name for a project because the target path is not empty.",
|
|
727
|
+
f"Base path: {base_path}",
|
|
728
|
+
"Existing files and folders you MUST avoid (do not reuse any of these names):",
|
|
729
|
+
entries_display or "- <empty>",
|
|
730
|
+
"User request driving this project:",
|
|
731
|
+
user_request or "<no request provided>",
|
|
732
|
+
"Rules:",
|
|
733
|
+
"- Return a single folder name only. Do NOT echo the instructions. No paths, quotes, JSON, or extra text.",
|
|
734
|
+
"- Use lowercase kebab-case or snake_case; ASCII letters, numbers, hyphens, and underscores only.",
|
|
735
|
+
"- Do not use any existing names above. Avoid dots, spaces, or slashes.",
|
|
736
|
+
"- Keep it under 40 characters.",
|
|
737
|
+
]
|
|
738
|
+
|
|
739
|
+
if rejection_reason:
|
|
740
|
+
prompt_sections.append(
|
|
741
|
+
f"Previous suggestion was rejected: {rejection_reason}. Try a different unique name."
|
|
742
|
+
)
|
|
743
|
+
|
|
744
|
+
return "\n".join(prompt_sections)
|
|
745
|
+
|
|
746
|
+
def _format_validation_history(
|
|
747
|
+
self, validation_history: List[Any], latest_plan_logs: Optional[List[Any]]
|
|
748
|
+
) -> str:
|
|
749
|
+
"""Format validation logs, splitting latest plan from historical ones."""
|
|
750
|
+
|
|
751
|
+
if not validation_history:
|
|
752
|
+
return "No validation or test commands have been executed yet."
|
|
753
|
+
|
|
754
|
+
latest_logs = latest_plan_logs or []
|
|
755
|
+
latest_count = len(latest_logs)
|
|
756
|
+
historical_logs = (
|
|
757
|
+
validation_history[:-latest_count] if latest_count else validation_history
|
|
758
|
+
)
|
|
759
|
+
|
|
760
|
+
def normalize(entry: Any) -> Dict[str, Any]:
|
|
761
|
+
if hasattr(entry, "to_dict"):
|
|
762
|
+
return entry.to_dict()
|
|
763
|
+
if isinstance(entry, dict):
|
|
764
|
+
return entry
|
|
765
|
+
return {}
|
|
766
|
+
|
|
767
|
+
def render(entries: List[Any], limit: Optional[int] = None) -> List[str]:
|
|
768
|
+
if not entries:
|
|
769
|
+
return ["None"]
|
|
770
|
+
|
|
771
|
+
selected = entries if limit is None else entries[-limit:]
|
|
772
|
+
lines: List[str] = []
|
|
773
|
+
for entry in selected:
|
|
774
|
+
data = normalize(entry)
|
|
775
|
+
template = data.get("template", "unknown")
|
|
776
|
+
description = data.get("description", "")
|
|
777
|
+
success = data.get("success", True)
|
|
778
|
+
status = "PASS" if success else "FAIL"
|
|
779
|
+
error = data.get("error")
|
|
780
|
+
output = data.get("output", {})
|
|
781
|
+
|
|
782
|
+
lines.append(f"- [{status}] {template}: {description}")
|
|
783
|
+
if error:
|
|
784
|
+
lines.append(f" Error: {error}")
|
|
785
|
+
|
|
786
|
+
snippet = ""
|
|
787
|
+
if isinstance(output, dict):
|
|
788
|
+
for key in ("stdout", "stderr", "message", "log", "details"):
|
|
789
|
+
if output.get(key):
|
|
790
|
+
snippet = str(output[key])
|
|
791
|
+
break
|
|
792
|
+
if not snippet and output:
|
|
793
|
+
snippet = json.dumps(output)[:400]
|
|
794
|
+
elif output:
|
|
795
|
+
snippet = str(output)[:400]
|
|
796
|
+
|
|
797
|
+
snippet = snippet.strip()
|
|
798
|
+
if snippet:
|
|
799
|
+
lines.append(f" Output: {snippet[:400]}")
|
|
800
|
+
return lines
|
|
801
|
+
|
|
802
|
+
sections: List[str] = []
|
|
803
|
+
sections.append("### Latest Plan Results")
|
|
804
|
+
sections.extend(render(list(latest_logs)))
|
|
805
|
+
sections.append("")
|
|
806
|
+
sections.append("### Previous Plan History")
|
|
807
|
+
sections.extend(render(list(historical_logs), limit=5))
|
|
808
|
+
|
|
809
|
+
return "\n".join(sections).strip()
|
|
579
810
|
|
|
580
811
|
def _parse_checkpoint_response(self, response: Any) -> Dict[str, Any]:
|
|
581
812
|
"""Parse JSON output from the checkpoint reviewer."""
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# Copyright(C)
|
|
1
|
+
# Copyright(C) 2025-2026 Advanced Micro Devices, Inc. All rights reserved.
|
|
2
2
|
# SPDX-License-Identifier: MIT
|
|
3
3
|
"""
|
|
4
4
|
Three-tier error recovery for orchestration workflows.
|
|
@@ -72,7 +72,7 @@ ERROR_PATTERNS: List[ErrorPattern] = [
|
|
|
72
72
|
pattern=r"ModuleNotFoundError:\s+No module named '([^']+)'",
|
|
73
73
|
category=ErrorCategory.DEPENDENCY,
|
|
74
74
|
action=RecoveryAction.FIX_AND_RETRY,
|
|
75
|
-
fix_command="pip install {module}",
|
|
75
|
+
fix_command="uv pip install {module}",
|
|
76
76
|
max_retries=2,
|
|
77
77
|
),
|
|
78
78
|
# TypeScript compilation - escalate to LLM
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# Copyright(C)
|
|
1
|
+
# Copyright(C) 2025-2026 Advanced Micro Devices, Inc. All rights reserved.
|
|
2
2
|
# SPDX-License-Identifier: MIT
|
|
3
3
|
"""Template Catalog for LLM-Driven Checklist Generation.
|
|
4
4
|
|
|
@@ -257,9 +257,14 @@ TEMPLATE_CATALOG: Dict[str, TemplateDefinition] = {
|
|
|
257
257
|
),
|
|
258
258
|
"variant": ParameterSpec(
|
|
259
259
|
type=ParameterType.STRING,
|
|
260
|
-
description="Component variant: list|form|new|detail|actions",
|
|
260
|
+
description="Component variant: list|form|new|detail|actions|artifact-timer",
|
|
261
261
|
example="list",
|
|
262
262
|
),
|
|
263
|
+
"component_name": ParameterSpec(
|
|
264
|
+
type=ParameterType.STRING,
|
|
265
|
+
description="Optional explicit component name (e.g., CountdownTimer)",
|
|
266
|
+
required=False,
|
|
267
|
+
),
|
|
263
268
|
"with_checkboxes": ParameterSpec(
|
|
264
269
|
type=ParameterType.BOOLEAN,
|
|
265
270
|
description="Add checkbox UI for boolean fields (e.g., todo completion)",
|
|
@@ -275,6 +280,7 @@ TEMPLATE_CATALOG: Dict[str, TemplateDefinition] = {
|
|
|
275
280
|
"Use 'form' for reusable create/edit form component",
|
|
276
281
|
"Use 'new' for /resource/new page",
|
|
277
282
|
"Use 'detail' for /resource/[id] EDIT page with pre-populated form",
|
|
283
|
+
"Use 'artifact-timer' when the user requests a countdown; supply component_name (e.g., CountdownTimer) so pages can import the client-side timer widget",
|
|
278
284
|
"Add with_checkboxes=true for todo apps",
|
|
279
285
|
],
|
|
280
286
|
),
|