amd-gaia 0.14.1__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- amd_gaia-0.14.1.dist-info/METADATA +768 -0
- amd_gaia-0.14.1.dist-info/RECORD +800 -0
- amd_gaia-0.14.1.dist-info/WHEEL +5 -0
- amd_gaia-0.14.1.dist-info/entry_points.txt +5 -0
- amd_gaia-0.14.1.dist-info/licenses/LICENSE.md +21 -0
- amd_gaia-0.14.1.dist-info/top_level.txt +1 -0
- gaia/__init__.py +2 -0
- gaia/agents/__init__.py +19 -0
- gaia/agents/base/__init__.py +9 -0
- gaia/agents/base/agent.py +2072 -0
- gaia/agents/base/api_agent.py +120 -0
- gaia/agents/base/console.py +1457 -0
- gaia/agents/base/mcp_agent.py +86 -0
- gaia/agents/base/tools.py +83 -0
- gaia/agents/blender/agent.py +556 -0
- gaia/agents/blender/agent_simple.py +135 -0
- gaia/agents/blender/app.py +211 -0
- gaia/agents/blender/app_simple.py +41 -0
- gaia/agents/blender/core/__init__.py +16 -0
- gaia/agents/blender/core/materials.py +506 -0
- gaia/agents/blender/core/objects.py +316 -0
- gaia/agents/blender/core/rendering.py +225 -0
- gaia/agents/blender/core/scene.py +220 -0
- gaia/agents/blender/core/view.py +146 -0
- gaia/agents/chat/__init__.py +9 -0
- gaia/agents/chat/agent.py +975 -0
- gaia/agents/chat/app.py +1058 -0
- gaia/agents/chat/session.py +508 -0
- gaia/agents/chat/tools/__init__.py +15 -0
- gaia/agents/chat/tools/file_tools.py +96 -0
- gaia/agents/chat/tools/rag_tools.py +1729 -0
- gaia/agents/chat/tools/shell_tools.py +436 -0
- gaia/agents/code/__init__.py +7 -0
- gaia/agents/code/agent.py +547 -0
- gaia/agents/code/app.py +266 -0
- gaia/agents/code/models.py +135 -0
- gaia/agents/code/orchestration/__init__.py +24 -0
- gaia/agents/code/orchestration/checklist_executor.py +1739 -0
- gaia/agents/code/orchestration/checklist_generator.py +709 -0
- gaia/agents/code/orchestration/factories/__init__.py +9 -0
- gaia/agents/code/orchestration/factories/base.py +63 -0
- gaia/agents/code/orchestration/factories/nextjs_factory.py +118 -0
- gaia/agents/code/orchestration/factories/python_factory.py +106 -0
- gaia/agents/code/orchestration/orchestrator.py +610 -0
- gaia/agents/code/orchestration/project_analyzer.py +391 -0
- gaia/agents/code/orchestration/steps/__init__.py +67 -0
- gaia/agents/code/orchestration/steps/base.py +188 -0
- gaia/agents/code/orchestration/steps/error_handler.py +314 -0
- gaia/agents/code/orchestration/steps/nextjs.py +828 -0
- gaia/agents/code/orchestration/steps/python.py +307 -0
- gaia/agents/code/orchestration/template_catalog.py +463 -0
- gaia/agents/code/orchestration/workflows/__init__.py +14 -0
- gaia/agents/code/orchestration/workflows/base.py +80 -0
- gaia/agents/code/orchestration/workflows/nextjs.py +186 -0
- gaia/agents/code/orchestration/workflows/python.py +94 -0
- gaia/agents/code/prompts/__init__.py +11 -0
- gaia/agents/code/prompts/base_prompt.py +77 -0
- gaia/agents/code/prompts/code_patterns.py +1925 -0
- gaia/agents/code/prompts/nextjs_prompt.py +40 -0
- gaia/agents/code/prompts/python_prompt.py +109 -0
- gaia/agents/code/schema_inference.py +365 -0
- gaia/agents/code/system_prompt.py +41 -0
- gaia/agents/code/tools/__init__.py +42 -0
- gaia/agents/code/tools/cli_tools.py +1138 -0
- gaia/agents/code/tools/code_formatting.py +319 -0
- gaia/agents/code/tools/code_tools.py +769 -0
- gaia/agents/code/tools/error_fixing.py +1347 -0
- gaia/agents/code/tools/external_tools.py +180 -0
- gaia/agents/code/tools/file_io.py +845 -0
- gaia/agents/code/tools/prisma_tools.py +190 -0
- gaia/agents/code/tools/project_management.py +1016 -0
- gaia/agents/code/tools/testing.py +321 -0
- gaia/agents/code/tools/typescript_tools.py +122 -0
- gaia/agents/code/tools/validation_parsing.py +461 -0
- gaia/agents/code/tools/validation_tools.py +803 -0
- gaia/agents/code/tools/web_dev_tools.py +1744 -0
- gaia/agents/code/validators/__init__.py +16 -0
- gaia/agents/code/validators/antipattern_checker.py +241 -0
- gaia/agents/code/validators/ast_analyzer.py +197 -0
- gaia/agents/code/validators/requirements_validator.py +145 -0
- gaia/agents/code/validators/syntax_validator.py +171 -0
- gaia/agents/docker/__init__.py +7 -0
- gaia/agents/docker/agent.py +642 -0
- gaia/agents/jira/__init__.py +11 -0
- gaia/agents/jira/agent.py +894 -0
- gaia/agents/jira/jql_templates.py +299 -0
- gaia/agents/routing/__init__.py +7 -0
- gaia/agents/routing/agent.py +512 -0
- gaia/agents/routing/system_prompt.py +75 -0
- gaia/api/__init__.py +23 -0
- gaia/api/agent_registry.py +238 -0
- gaia/api/app.py +305 -0
- gaia/api/openai_server.py +575 -0
- gaia/api/schemas.py +186 -0
- gaia/api/sse_handler.py +370 -0
- gaia/apps/__init__.py +4 -0
- gaia/apps/llm/__init__.py +6 -0
- gaia/apps/llm/app.py +169 -0
- gaia/apps/summarize/app.py +633 -0
- gaia/apps/summarize/html_viewer.py +133 -0
- gaia/apps/summarize/pdf_formatter.py +284 -0
- gaia/audio/__init__.py +2 -0
- gaia/audio/audio_client.py +439 -0
- gaia/audio/audio_recorder.py +269 -0
- gaia/audio/kokoro_tts.py +599 -0
- gaia/audio/whisper_asr.py +432 -0
- gaia/chat/__init__.py +16 -0
- gaia/chat/app.py +430 -0
- gaia/chat/prompts.py +522 -0
- gaia/chat/sdk.py +1200 -0
- gaia/cli.py +5621 -0
- gaia/eval/batch_experiment.py +2332 -0
- gaia/eval/claude.py +542 -0
- gaia/eval/config.py +37 -0
- gaia/eval/email_generator.py +512 -0
- gaia/eval/eval.py +3179 -0
- gaia/eval/groundtruth.py +1130 -0
- gaia/eval/transcript_generator.py +582 -0
- gaia/eval/webapp/README.md +168 -0
- gaia/eval/webapp/node_modules/.bin/mime +16 -0
- gaia/eval/webapp/node_modules/.bin/mime.cmd +17 -0
- gaia/eval/webapp/node_modules/.bin/mime.ps1 +28 -0
- gaia/eval/webapp/node_modules/.package-lock.json +865 -0
- gaia/eval/webapp/node_modules/accepts/HISTORY.md +243 -0
- gaia/eval/webapp/node_modules/accepts/LICENSE +23 -0
- gaia/eval/webapp/node_modules/accepts/README.md +140 -0
- gaia/eval/webapp/node_modules/accepts/index.js +238 -0
- gaia/eval/webapp/node_modules/accepts/package.json +47 -0
- gaia/eval/webapp/node_modules/array-flatten/LICENSE +21 -0
- gaia/eval/webapp/node_modules/array-flatten/README.md +43 -0
- gaia/eval/webapp/node_modules/array-flatten/array-flatten.js +64 -0
- gaia/eval/webapp/node_modules/array-flatten/package.json +39 -0
- gaia/eval/webapp/node_modules/body-parser/HISTORY.md +672 -0
- gaia/eval/webapp/node_modules/body-parser/LICENSE +23 -0
- gaia/eval/webapp/node_modules/body-parser/README.md +476 -0
- gaia/eval/webapp/node_modules/body-parser/SECURITY.md +25 -0
- gaia/eval/webapp/node_modules/body-parser/index.js +156 -0
- gaia/eval/webapp/node_modules/body-parser/lib/read.js +205 -0
- gaia/eval/webapp/node_modules/body-parser/lib/types/json.js +247 -0
- gaia/eval/webapp/node_modules/body-parser/lib/types/raw.js +101 -0
- gaia/eval/webapp/node_modules/body-parser/lib/types/text.js +121 -0
- gaia/eval/webapp/node_modules/body-parser/lib/types/urlencoded.js +307 -0
- gaia/eval/webapp/node_modules/body-parser/package.json +56 -0
- gaia/eval/webapp/node_modules/bytes/History.md +97 -0
- gaia/eval/webapp/node_modules/bytes/LICENSE +23 -0
- gaia/eval/webapp/node_modules/bytes/Readme.md +152 -0
- gaia/eval/webapp/node_modules/bytes/index.js +170 -0
- gaia/eval/webapp/node_modules/bytes/package.json +42 -0
- gaia/eval/webapp/node_modules/call-bind-apply-helpers/.eslintrc +17 -0
- gaia/eval/webapp/node_modules/call-bind-apply-helpers/.github/FUNDING.yml +12 -0
- gaia/eval/webapp/node_modules/call-bind-apply-helpers/.nycrc +9 -0
- gaia/eval/webapp/node_modules/call-bind-apply-helpers/CHANGELOG.md +30 -0
- gaia/eval/webapp/node_modules/call-bind-apply-helpers/LICENSE +21 -0
- gaia/eval/webapp/node_modules/call-bind-apply-helpers/README.md +62 -0
- gaia/eval/webapp/node_modules/call-bind-apply-helpers/actualApply.d.ts +1 -0
- gaia/eval/webapp/node_modules/call-bind-apply-helpers/actualApply.js +10 -0
- gaia/eval/webapp/node_modules/call-bind-apply-helpers/applyBind.d.ts +19 -0
- gaia/eval/webapp/node_modules/call-bind-apply-helpers/applyBind.js +10 -0
- gaia/eval/webapp/node_modules/call-bind-apply-helpers/functionApply.d.ts +1 -0
- gaia/eval/webapp/node_modules/call-bind-apply-helpers/functionApply.js +4 -0
- gaia/eval/webapp/node_modules/call-bind-apply-helpers/functionCall.d.ts +1 -0
- gaia/eval/webapp/node_modules/call-bind-apply-helpers/functionCall.js +4 -0
- gaia/eval/webapp/node_modules/call-bind-apply-helpers/index.d.ts +64 -0
- gaia/eval/webapp/node_modules/call-bind-apply-helpers/index.js +15 -0
- gaia/eval/webapp/node_modules/call-bind-apply-helpers/package.json +85 -0
- gaia/eval/webapp/node_modules/call-bind-apply-helpers/reflectApply.d.ts +3 -0
- gaia/eval/webapp/node_modules/call-bind-apply-helpers/reflectApply.js +4 -0
- gaia/eval/webapp/node_modules/call-bind-apply-helpers/test/index.js +63 -0
- gaia/eval/webapp/node_modules/call-bind-apply-helpers/tsconfig.json +9 -0
- gaia/eval/webapp/node_modules/call-bound/.eslintrc +13 -0
- gaia/eval/webapp/node_modules/call-bound/.github/FUNDING.yml +12 -0
- gaia/eval/webapp/node_modules/call-bound/.nycrc +9 -0
- gaia/eval/webapp/node_modules/call-bound/CHANGELOG.md +42 -0
- gaia/eval/webapp/node_modules/call-bound/LICENSE +21 -0
- gaia/eval/webapp/node_modules/call-bound/README.md +53 -0
- gaia/eval/webapp/node_modules/call-bound/index.d.ts +94 -0
- gaia/eval/webapp/node_modules/call-bound/index.js +19 -0
- gaia/eval/webapp/node_modules/call-bound/package.json +99 -0
- gaia/eval/webapp/node_modules/call-bound/test/index.js +61 -0
- gaia/eval/webapp/node_modules/call-bound/tsconfig.json +10 -0
- gaia/eval/webapp/node_modules/content-disposition/HISTORY.md +60 -0
- gaia/eval/webapp/node_modules/content-disposition/LICENSE +22 -0
- gaia/eval/webapp/node_modules/content-disposition/README.md +142 -0
- gaia/eval/webapp/node_modules/content-disposition/index.js +458 -0
- gaia/eval/webapp/node_modules/content-disposition/package.json +44 -0
- gaia/eval/webapp/node_modules/content-type/HISTORY.md +29 -0
- gaia/eval/webapp/node_modules/content-type/LICENSE +22 -0
- gaia/eval/webapp/node_modules/content-type/README.md +94 -0
- gaia/eval/webapp/node_modules/content-type/index.js +225 -0
- gaia/eval/webapp/node_modules/content-type/package.json +42 -0
- gaia/eval/webapp/node_modules/cookie/LICENSE +24 -0
- gaia/eval/webapp/node_modules/cookie/README.md +317 -0
- gaia/eval/webapp/node_modules/cookie/SECURITY.md +25 -0
- gaia/eval/webapp/node_modules/cookie/index.js +334 -0
- gaia/eval/webapp/node_modules/cookie/package.json +44 -0
- gaia/eval/webapp/node_modules/cookie-signature/.npmignore +4 -0
- gaia/eval/webapp/node_modules/cookie-signature/History.md +38 -0
- gaia/eval/webapp/node_modules/cookie-signature/Readme.md +42 -0
- gaia/eval/webapp/node_modules/cookie-signature/index.js +51 -0
- gaia/eval/webapp/node_modules/cookie-signature/package.json +18 -0
- gaia/eval/webapp/node_modules/debug/.coveralls.yml +1 -0
- gaia/eval/webapp/node_modules/debug/.eslintrc +11 -0
- gaia/eval/webapp/node_modules/debug/.npmignore +9 -0
- gaia/eval/webapp/node_modules/debug/.travis.yml +14 -0
- gaia/eval/webapp/node_modules/debug/CHANGELOG.md +362 -0
- gaia/eval/webapp/node_modules/debug/LICENSE +19 -0
- gaia/eval/webapp/node_modules/debug/Makefile +50 -0
- gaia/eval/webapp/node_modules/debug/README.md +312 -0
- gaia/eval/webapp/node_modules/debug/component.json +19 -0
- gaia/eval/webapp/node_modules/debug/karma.conf.js +70 -0
- gaia/eval/webapp/node_modules/debug/node.js +1 -0
- gaia/eval/webapp/node_modules/debug/package.json +49 -0
- gaia/eval/webapp/node_modules/debug/src/browser.js +185 -0
- gaia/eval/webapp/node_modules/debug/src/debug.js +202 -0
- gaia/eval/webapp/node_modules/debug/src/index.js +10 -0
- gaia/eval/webapp/node_modules/debug/src/inspector-log.js +15 -0
- gaia/eval/webapp/node_modules/debug/src/node.js +248 -0
- gaia/eval/webapp/node_modules/depd/History.md +103 -0
- gaia/eval/webapp/node_modules/depd/LICENSE +22 -0
- gaia/eval/webapp/node_modules/depd/Readme.md +280 -0
- gaia/eval/webapp/node_modules/depd/index.js +538 -0
- gaia/eval/webapp/node_modules/depd/lib/browser/index.js +77 -0
- gaia/eval/webapp/node_modules/depd/package.json +45 -0
- gaia/eval/webapp/node_modules/destroy/LICENSE +23 -0
- gaia/eval/webapp/node_modules/destroy/README.md +63 -0
- gaia/eval/webapp/node_modules/destroy/index.js +209 -0
- gaia/eval/webapp/node_modules/destroy/package.json +48 -0
- gaia/eval/webapp/node_modules/dunder-proto/.eslintrc +5 -0
- gaia/eval/webapp/node_modules/dunder-proto/.github/FUNDING.yml +12 -0
- gaia/eval/webapp/node_modules/dunder-proto/.nycrc +13 -0
- gaia/eval/webapp/node_modules/dunder-proto/CHANGELOG.md +24 -0
- gaia/eval/webapp/node_modules/dunder-proto/LICENSE +21 -0
- gaia/eval/webapp/node_modules/dunder-proto/README.md +54 -0
- gaia/eval/webapp/node_modules/dunder-proto/get.d.ts +5 -0
- gaia/eval/webapp/node_modules/dunder-proto/get.js +30 -0
- gaia/eval/webapp/node_modules/dunder-proto/package.json +76 -0
- gaia/eval/webapp/node_modules/dunder-proto/set.d.ts +5 -0
- gaia/eval/webapp/node_modules/dunder-proto/set.js +35 -0
- gaia/eval/webapp/node_modules/dunder-proto/test/get.js +34 -0
- gaia/eval/webapp/node_modules/dunder-proto/test/index.js +4 -0
- gaia/eval/webapp/node_modules/dunder-proto/test/set.js +50 -0
- gaia/eval/webapp/node_modules/dunder-proto/tsconfig.json +9 -0
- gaia/eval/webapp/node_modules/ee-first/LICENSE +22 -0
- gaia/eval/webapp/node_modules/ee-first/README.md +80 -0
- gaia/eval/webapp/node_modules/ee-first/index.js +95 -0
- gaia/eval/webapp/node_modules/ee-first/package.json +29 -0
- gaia/eval/webapp/node_modules/encodeurl/LICENSE +22 -0
- gaia/eval/webapp/node_modules/encodeurl/README.md +109 -0
- gaia/eval/webapp/node_modules/encodeurl/index.js +60 -0
- gaia/eval/webapp/node_modules/encodeurl/package.json +40 -0
- gaia/eval/webapp/node_modules/es-define-property/.eslintrc +13 -0
- gaia/eval/webapp/node_modules/es-define-property/.github/FUNDING.yml +12 -0
- gaia/eval/webapp/node_modules/es-define-property/.nycrc +9 -0
- gaia/eval/webapp/node_modules/es-define-property/CHANGELOG.md +29 -0
- gaia/eval/webapp/node_modules/es-define-property/LICENSE +21 -0
- gaia/eval/webapp/node_modules/es-define-property/README.md +49 -0
- gaia/eval/webapp/node_modules/es-define-property/index.d.ts +3 -0
- gaia/eval/webapp/node_modules/es-define-property/index.js +14 -0
- gaia/eval/webapp/node_modules/es-define-property/package.json +81 -0
- gaia/eval/webapp/node_modules/es-define-property/test/index.js +56 -0
- gaia/eval/webapp/node_modules/es-define-property/tsconfig.json +10 -0
- gaia/eval/webapp/node_modules/es-errors/.eslintrc +5 -0
- gaia/eval/webapp/node_modules/es-errors/.github/FUNDING.yml +12 -0
- gaia/eval/webapp/node_modules/es-errors/CHANGELOG.md +40 -0
- gaia/eval/webapp/node_modules/es-errors/LICENSE +21 -0
- gaia/eval/webapp/node_modules/es-errors/README.md +55 -0
- gaia/eval/webapp/node_modules/es-errors/eval.d.ts +3 -0
- gaia/eval/webapp/node_modules/es-errors/eval.js +4 -0
- gaia/eval/webapp/node_modules/es-errors/index.d.ts +3 -0
- gaia/eval/webapp/node_modules/es-errors/index.js +4 -0
- gaia/eval/webapp/node_modules/es-errors/package.json +80 -0
- gaia/eval/webapp/node_modules/es-errors/range.d.ts +3 -0
- gaia/eval/webapp/node_modules/es-errors/range.js +4 -0
- gaia/eval/webapp/node_modules/es-errors/ref.d.ts +3 -0
- gaia/eval/webapp/node_modules/es-errors/ref.js +4 -0
- gaia/eval/webapp/node_modules/es-errors/syntax.d.ts +3 -0
- gaia/eval/webapp/node_modules/es-errors/syntax.js +4 -0
- gaia/eval/webapp/node_modules/es-errors/test/index.js +19 -0
- gaia/eval/webapp/node_modules/es-errors/tsconfig.json +49 -0
- gaia/eval/webapp/node_modules/es-errors/type.d.ts +3 -0
- gaia/eval/webapp/node_modules/es-errors/type.js +4 -0
- gaia/eval/webapp/node_modules/es-errors/uri.d.ts +3 -0
- gaia/eval/webapp/node_modules/es-errors/uri.js +4 -0
- gaia/eval/webapp/node_modules/es-object-atoms/.eslintrc +16 -0
- gaia/eval/webapp/node_modules/es-object-atoms/.github/FUNDING.yml +12 -0
- gaia/eval/webapp/node_modules/es-object-atoms/CHANGELOG.md +37 -0
- gaia/eval/webapp/node_modules/es-object-atoms/LICENSE +21 -0
- gaia/eval/webapp/node_modules/es-object-atoms/README.md +63 -0
- gaia/eval/webapp/node_modules/es-object-atoms/RequireObjectCoercible.d.ts +3 -0
- gaia/eval/webapp/node_modules/es-object-atoms/RequireObjectCoercible.js +11 -0
- gaia/eval/webapp/node_modules/es-object-atoms/ToObject.d.ts +7 -0
- gaia/eval/webapp/node_modules/es-object-atoms/ToObject.js +10 -0
- gaia/eval/webapp/node_modules/es-object-atoms/index.d.ts +3 -0
- gaia/eval/webapp/node_modules/es-object-atoms/index.js +4 -0
- gaia/eval/webapp/node_modules/es-object-atoms/isObject.d.ts +3 -0
- gaia/eval/webapp/node_modules/es-object-atoms/isObject.js +6 -0
- gaia/eval/webapp/node_modules/es-object-atoms/package.json +80 -0
- gaia/eval/webapp/node_modules/es-object-atoms/test/index.js +38 -0
- gaia/eval/webapp/node_modules/es-object-atoms/tsconfig.json +6 -0
- gaia/eval/webapp/node_modules/escape-html/LICENSE +24 -0
- gaia/eval/webapp/node_modules/escape-html/Readme.md +43 -0
- gaia/eval/webapp/node_modules/escape-html/index.js +78 -0
- gaia/eval/webapp/node_modules/escape-html/package.json +24 -0
- gaia/eval/webapp/node_modules/etag/HISTORY.md +83 -0
- gaia/eval/webapp/node_modules/etag/LICENSE +22 -0
- gaia/eval/webapp/node_modules/etag/README.md +159 -0
- gaia/eval/webapp/node_modules/etag/index.js +131 -0
- gaia/eval/webapp/node_modules/etag/package.json +47 -0
- gaia/eval/webapp/node_modules/express/History.md +3656 -0
- gaia/eval/webapp/node_modules/express/LICENSE +24 -0
- gaia/eval/webapp/node_modules/express/Readme.md +260 -0
- gaia/eval/webapp/node_modules/express/index.js +11 -0
- gaia/eval/webapp/node_modules/express/lib/application.js +661 -0
- gaia/eval/webapp/node_modules/express/lib/express.js +116 -0
- gaia/eval/webapp/node_modules/express/lib/middleware/init.js +43 -0
- gaia/eval/webapp/node_modules/express/lib/middleware/query.js +47 -0
- gaia/eval/webapp/node_modules/express/lib/request.js +525 -0
- gaia/eval/webapp/node_modules/express/lib/response.js +1179 -0
- gaia/eval/webapp/node_modules/express/lib/router/index.js +673 -0
- gaia/eval/webapp/node_modules/express/lib/router/layer.js +181 -0
- gaia/eval/webapp/node_modules/express/lib/router/route.js +230 -0
- gaia/eval/webapp/node_modules/express/lib/utils.js +303 -0
- gaia/eval/webapp/node_modules/express/lib/view.js +182 -0
- gaia/eval/webapp/node_modules/express/package.json +102 -0
- gaia/eval/webapp/node_modules/finalhandler/HISTORY.md +210 -0
- gaia/eval/webapp/node_modules/finalhandler/LICENSE +22 -0
- gaia/eval/webapp/node_modules/finalhandler/README.md +147 -0
- gaia/eval/webapp/node_modules/finalhandler/SECURITY.md +25 -0
- gaia/eval/webapp/node_modules/finalhandler/index.js +341 -0
- gaia/eval/webapp/node_modules/finalhandler/package.json +47 -0
- gaia/eval/webapp/node_modules/forwarded/HISTORY.md +21 -0
- gaia/eval/webapp/node_modules/forwarded/LICENSE +22 -0
- gaia/eval/webapp/node_modules/forwarded/README.md +57 -0
- gaia/eval/webapp/node_modules/forwarded/index.js +90 -0
- gaia/eval/webapp/node_modules/forwarded/package.json +45 -0
- gaia/eval/webapp/node_modules/fresh/HISTORY.md +70 -0
- gaia/eval/webapp/node_modules/fresh/LICENSE +23 -0
- gaia/eval/webapp/node_modules/fresh/README.md +119 -0
- gaia/eval/webapp/node_modules/fresh/index.js +137 -0
- gaia/eval/webapp/node_modules/fresh/package.json +46 -0
- gaia/eval/webapp/node_modules/fs/README.md +9 -0
- gaia/eval/webapp/node_modules/fs/package.json +20 -0
- gaia/eval/webapp/node_modules/function-bind/.eslintrc +21 -0
- gaia/eval/webapp/node_modules/function-bind/.github/FUNDING.yml +12 -0
- gaia/eval/webapp/node_modules/function-bind/.github/SECURITY.md +3 -0
- gaia/eval/webapp/node_modules/function-bind/.nycrc +13 -0
- gaia/eval/webapp/node_modules/function-bind/CHANGELOG.md +136 -0
- gaia/eval/webapp/node_modules/function-bind/LICENSE +20 -0
- gaia/eval/webapp/node_modules/function-bind/README.md +46 -0
- gaia/eval/webapp/node_modules/function-bind/implementation.js +84 -0
- gaia/eval/webapp/node_modules/function-bind/index.js +5 -0
- gaia/eval/webapp/node_modules/function-bind/package.json +87 -0
- gaia/eval/webapp/node_modules/function-bind/test/.eslintrc +9 -0
- gaia/eval/webapp/node_modules/function-bind/test/index.js +252 -0
- gaia/eval/webapp/node_modules/get-intrinsic/.eslintrc +42 -0
- gaia/eval/webapp/node_modules/get-intrinsic/.github/FUNDING.yml +12 -0
- gaia/eval/webapp/node_modules/get-intrinsic/.nycrc +9 -0
- gaia/eval/webapp/node_modules/get-intrinsic/CHANGELOG.md +186 -0
- gaia/eval/webapp/node_modules/get-intrinsic/LICENSE +21 -0
- gaia/eval/webapp/node_modules/get-intrinsic/README.md +71 -0
- gaia/eval/webapp/node_modules/get-intrinsic/index.js +378 -0
- gaia/eval/webapp/node_modules/get-intrinsic/package.json +97 -0
- gaia/eval/webapp/node_modules/get-intrinsic/test/GetIntrinsic.js +274 -0
- gaia/eval/webapp/node_modules/get-proto/.eslintrc +10 -0
- gaia/eval/webapp/node_modules/get-proto/.github/FUNDING.yml +12 -0
- gaia/eval/webapp/node_modules/get-proto/.nycrc +9 -0
- gaia/eval/webapp/node_modules/get-proto/CHANGELOG.md +21 -0
- gaia/eval/webapp/node_modules/get-proto/LICENSE +21 -0
- gaia/eval/webapp/node_modules/get-proto/Object.getPrototypeOf.d.ts +5 -0
- gaia/eval/webapp/node_modules/get-proto/Object.getPrototypeOf.js +6 -0
- gaia/eval/webapp/node_modules/get-proto/README.md +50 -0
- gaia/eval/webapp/node_modules/get-proto/Reflect.getPrototypeOf.d.ts +3 -0
- gaia/eval/webapp/node_modules/get-proto/Reflect.getPrototypeOf.js +4 -0
- gaia/eval/webapp/node_modules/get-proto/index.d.ts +5 -0
- gaia/eval/webapp/node_modules/get-proto/index.js +27 -0
- gaia/eval/webapp/node_modules/get-proto/package.json +81 -0
- gaia/eval/webapp/node_modules/get-proto/test/index.js +68 -0
- gaia/eval/webapp/node_modules/get-proto/tsconfig.json +9 -0
- gaia/eval/webapp/node_modules/gopd/.eslintrc +16 -0
- gaia/eval/webapp/node_modules/gopd/.github/FUNDING.yml +12 -0
- gaia/eval/webapp/node_modules/gopd/CHANGELOG.md +45 -0
- gaia/eval/webapp/node_modules/gopd/LICENSE +21 -0
- gaia/eval/webapp/node_modules/gopd/README.md +40 -0
- gaia/eval/webapp/node_modules/gopd/gOPD.d.ts +1 -0
- gaia/eval/webapp/node_modules/gopd/gOPD.js +4 -0
- gaia/eval/webapp/node_modules/gopd/index.d.ts +5 -0
- gaia/eval/webapp/node_modules/gopd/index.js +15 -0
- gaia/eval/webapp/node_modules/gopd/package.json +77 -0
- gaia/eval/webapp/node_modules/gopd/test/index.js +36 -0
- gaia/eval/webapp/node_modules/gopd/tsconfig.json +9 -0
- gaia/eval/webapp/node_modules/has-symbols/.eslintrc +11 -0
- gaia/eval/webapp/node_modules/has-symbols/.github/FUNDING.yml +12 -0
- gaia/eval/webapp/node_modules/has-symbols/.nycrc +9 -0
- gaia/eval/webapp/node_modules/has-symbols/CHANGELOG.md +91 -0
- gaia/eval/webapp/node_modules/has-symbols/LICENSE +21 -0
- gaia/eval/webapp/node_modules/has-symbols/README.md +46 -0
- gaia/eval/webapp/node_modules/has-symbols/index.d.ts +3 -0
- gaia/eval/webapp/node_modules/has-symbols/index.js +14 -0
- gaia/eval/webapp/node_modules/has-symbols/package.json +111 -0
- gaia/eval/webapp/node_modules/has-symbols/shams.d.ts +3 -0
- gaia/eval/webapp/node_modules/has-symbols/shams.js +45 -0
- gaia/eval/webapp/node_modules/has-symbols/test/index.js +22 -0
- gaia/eval/webapp/node_modules/has-symbols/test/shams/core-js.js +29 -0
- gaia/eval/webapp/node_modules/has-symbols/test/shams/get-own-property-symbols.js +29 -0
- gaia/eval/webapp/node_modules/has-symbols/test/tests.js +58 -0
- gaia/eval/webapp/node_modules/has-symbols/tsconfig.json +10 -0
- gaia/eval/webapp/node_modules/hasown/.eslintrc +5 -0
- gaia/eval/webapp/node_modules/hasown/.github/FUNDING.yml +12 -0
- gaia/eval/webapp/node_modules/hasown/.nycrc +13 -0
- gaia/eval/webapp/node_modules/hasown/CHANGELOG.md +40 -0
- gaia/eval/webapp/node_modules/hasown/LICENSE +21 -0
- gaia/eval/webapp/node_modules/hasown/README.md +40 -0
- gaia/eval/webapp/node_modules/hasown/index.d.ts +3 -0
- gaia/eval/webapp/node_modules/hasown/index.js +8 -0
- gaia/eval/webapp/node_modules/hasown/package.json +92 -0
- gaia/eval/webapp/node_modules/hasown/tsconfig.json +6 -0
- gaia/eval/webapp/node_modules/http-errors/HISTORY.md +180 -0
- gaia/eval/webapp/node_modules/http-errors/LICENSE +23 -0
- gaia/eval/webapp/node_modules/http-errors/README.md +169 -0
- gaia/eval/webapp/node_modules/http-errors/index.js +289 -0
- gaia/eval/webapp/node_modules/http-errors/package.json +50 -0
- gaia/eval/webapp/node_modules/iconv-lite/Changelog.md +162 -0
- gaia/eval/webapp/node_modules/iconv-lite/LICENSE +21 -0
- gaia/eval/webapp/node_modules/iconv-lite/README.md +156 -0
- gaia/eval/webapp/node_modules/iconv-lite/encodings/dbcs-codec.js +555 -0
- gaia/eval/webapp/node_modules/iconv-lite/encodings/dbcs-data.js +176 -0
- gaia/eval/webapp/node_modules/iconv-lite/encodings/index.js +22 -0
- gaia/eval/webapp/node_modules/iconv-lite/encodings/internal.js +188 -0
- gaia/eval/webapp/node_modules/iconv-lite/encodings/sbcs-codec.js +72 -0
- gaia/eval/webapp/node_modules/iconv-lite/encodings/sbcs-data-generated.js +451 -0
- gaia/eval/webapp/node_modules/iconv-lite/encodings/sbcs-data.js +174 -0
- gaia/eval/webapp/node_modules/iconv-lite/encodings/tables/big5-added.json +122 -0
- gaia/eval/webapp/node_modules/iconv-lite/encodings/tables/cp936.json +264 -0
- gaia/eval/webapp/node_modules/iconv-lite/encodings/tables/cp949.json +273 -0
- gaia/eval/webapp/node_modules/iconv-lite/encodings/tables/cp950.json +177 -0
- gaia/eval/webapp/node_modules/iconv-lite/encodings/tables/eucjp.json +182 -0
- gaia/eval/webapp/node_modules/iconv-lite/encodings/tables/gb18030-ranges.json +1 -0
- gaia/eval/webapp/node_modules/iconv-lite/encodings/tables/gbk-added.json +55 -0
- gaia/eval/webapp/node_modules/iconv-lite/encodings/tables/shiftjis.json +125 -0
- gaia/eval/webapp/node_modules/iconv-lite/encodings/utf16.js +177 -0
- gaia/eval/webapp/node_modules/iconv-lite/encodings/utf7.js +290 -0
- gaia/eval/webapp/node_modules/iconv-lite/lib/bom-handling.js +52 -0
- gaia/eval/webapp/node_modules/iconv-lite/lib/extend-node.js +217 -0
- gaia/eval/webapp/node_modules/iconv-lite/lib/index.d.ts +24 -0
- gaia/eval/webapp/node_modules/iconv-lite/lib/index.js +153 -0
- gaia/eval/webapp/node_modules/iconv-lite/lib/streams.js +121 -0
- gaia/eval/webapp/node_modules/iconv-lite/package.json +46 -0
- gaia/eval/webapp/node_modules/inherits/LICENSE +16 -0
- gaia/eval/webapp/node_modules/inherits/README.md +42 -0
- gaia/eval/webapp/node_modules/inherits/inherits.js +9 -0
- gaia/eval/webapp/node_modules/inherits/inherits_browser.js +27 -0
- gaia/eval/webapp/node_modules/inherits/package.json +29 -0
- gaia/eval/webapp/node_modules/ipaddr.js/LICENSE +19 -0
- gaia/eval/webapp/node_modules/ipaddr.js/README.md +233 -0
- gaia/eval/webapp/node_modules/ipaddr.js/ipaddr.min.js +1 -0
- gaia/eval/webapp/node_modules/ipaddr.js/lib/ipaddr.js +673 -0
- gaia/eval/webapp/node_modules/ipaddr.js/lib/ipaddr.js.d.ts +68 -0
- gaia/eval/webapp/node_modules/ipaddr.js/package.json +35 -0
- gaia/eval/webapp/node_modules/math-intrinsics/.eslintrc +16 -0
- gaia/eval/webapp/node_modules/math-intrinsics/.github/FUNDING.yml +12 -0
- gaia/eval/webapp/node_modules/math-intrinsics/CHANGELOG.md +24 -0
- gaia/eval/webapp/node_modules/math-intrinsics/LICENSE +21 -0
- gaia/eval/webapp/node_modules/math-intrinsics/README.md +50 -0
- gaia/eval/webapp/node_modules/math-intrinsics/abs.d.ts +1 -0
- gaia/eval/webapp/node_modules/math-intrinsics/abs.js +4 -0
- gaia/eval/webapp/node_modules/math-intrinsics/constants/maxArrayLength.d.ts +3 -0
- gaia/eval/webapp/node_modules/math-intrinsics/constants/maxArrayLength.js +4 -0
- gaia/eval/webapp/node_modules/math-intrinsics/constants/maxSafeInteger.d.ts +3 -0
- gaia/eval/webapp/node_modules/math-intrinsics/constants/maxSafeInteger.js +5 -0
- gaia/eval/webapp/node_modules/math-intrinsics/constants/maxValue.d.ts +3 -0
- gaia/eval/webapp/node_modules/math-intrinsics/constants/maxValue.js +5 -0
- gaia/eval/webapp/node_modules/math-intrinsics/floor.d.ts +1 -0
- gaia/eval/webapp/node_modules/math-intrinsics/floor.js +4 -0
- gaia/eval/webapp/node_modules/math-intrinsics/isFinite.d.ts +3 -0
- gaia/eval/webapp/node_modules/math-intrinsics/isFinite.js +12 -0
- gaia/eval/webapp/node_modules/math-intrinsics/isInteger.d.ts +3 -0
- gaia/eval/webapp/node_modules/math-intrinsics/isInteger.js +16 -0
- gaia/eval/webapp/node_modules/math-intrinsics/isNaN.d.ts +1 -0
- gaia/eval/webapp/node_modules/math-intrinsics/isNaN.js +6 -0
- gaia/eval/webapp/node_modules/math-intrinsics/isNegativeZero.d.ts +3 -0
- gaia/eval/webapp/node_modules/math-intrinsics/isNegativeZero.js +6 -0
- gaia/eval/webapp/node_modules/math-intrinsics/max.d.ts +1 -0
- gaia/eval/webapp/node_modules/math-intrinsics/max.js +4 -0
- gaia/eval/webapp/node_modules/math-intrinsics/min.d.ts +1 -0
- gaia/eval/webapp/node_modules/math-intrinsics/min.js +4 -0
- gaia/eval/webapp/node_modules/math-intrinsics/mod.d.ts +3 -0
- gaia/eval/webapp/node_modules/math-intrinsics/mod.js +9 -0
- gaia/eval/webapp/node_modules/math-intrinsics/package.json +86 -0
- gaia/eval/webapp/node_modules/math-intrinsics/pow.d.ts +1 -0
- gaia/eval/webapp/node_modules/math-intrinsics/pow.js +4 -0
- gaia/eval/webapp/node_modules/math-intrinsics/round.d.ts +1 -0
- gaia/eval/webapp/node_modules/math-intrinsics/round.js +4 -0
- gaia/eval/webapp/node_modules/math-intrinsics/sign.d.ts +3 -0
- gaia/eval/webapp/node_modules/math-intrinsics/sign.js +11 -0
- gaia/eval/webapp/node_modules/math-intrinsics/test/index.js +192 -0
- gaia/eval/webapp/node_modules/math-intrinsics/tsconfig.json +3 -0
- gaia/eval/webapp/node_modules/media-typer/HISTORY.md +22 -0
- gaia/eval/webapp/node_modules/media-typer/LICENSE +22 -0
- gaia/eval/webapp/node_modules/media-typer/README.md +81 -0
- gaia/eval/webapp/node_modules/media-typer/index.js +270 -0
- gaia/eval/webapp/node_modules/media-typer/package.json +26 -0
- gaia/eval/webapp/node_modules/merge-descriptors/HISTORY.md +21 -0
- gaia/eval/webapp/node_modules/merge-descriptors/LICENSE +23 -0
- gaia/eval/webapp/node_modules/merge-descriptors/README.md +49 -0
- gaia/eval/webapp/node_modules/merge-descriptors/index.js +60 -0
- gaia/eval/webapp/node_modules/merge-descriptors/package.json +39 -0
- gaia/eval/webapp/node_modules/methods/HISTORY.md +29 -0
- gaia/eval/webapp/node_modules/methods/LICENSE +24 -0
- gaia/eval/webapp/node_modules/methods/README.md +51 -0
- gaia/eval/webapp/node_modules/methods/index.js +69 -0
- gaia/eval/webapp/node_modules/methods/package.json +36 -0
- gaia/eval/webapp/node_modules/mime/.npmignore +0 -0
- gaia/eval/webapp/node_modules/mime/CHANGELOG.md +164 -0
- gaia/eval/webapp/node_modules/mime/LICENSE +21 -0
- gaia/eval/webapp/node_modules/mime/README.md +90 -0
- gaia/eval/webapp/node_modules/mime/cli.js +8 -0
- gaia/eval/webapp/node_modules/mime/mime.js +108 -0
- gaia/eval/webapp/node_modules/mime/package.json +44 -0
- gaia/eval/webapp/node_modules/mime/src/build.js +53 -0
- gaia/eval/webapp/node_modules/mime/src/test.js +60 -0
- gaia/eval/webapp/node_modules/mime/types.json +1 -0
- gaia/eval/webapp/node_modules/mime-db/HISTORY.md +507 -0
- gaia/eval/webapp/node_modules/mime-db/LICENSE +23 -0
- gaia/eval/webapp/node_modules/mime-db/README.md +100 -0
- gaia/eval/webapp/node_modules/mime-db/db.json +8519 -0
- gaia/eval/webapp/node_modules/mime-db/index.js +12 -0
- gaia/eval/webapp/node_modules/mime-db/package.json +60 -0
- gaia/eval/webapp/node_modules/mime-types/HISTORY.md +397 -0
- gaia/eval/webapp/node_modules/mime-types/LICENSE +23 -0
- gaia/eval/webapp/node_modules/mime-types/README.md +113 -0
- gaia/eval/webapp/node_modules/mime-types/index.js +188 -0
- gaia/eval/webapp/node_modules/mime-types/package.json +44 -0
- gaia/eval/webapp/node_modules/ms/index.js +152 -0
- gaia/eval/webapp/node_modules/ms/license.md +21 -0
- gaia/eval/webapp/node_modules/ms/package.json +37 -0
- gaia/eval/webapp/node_modules/ms/readme.md +51 -0
- gaia/eval/webapp/node_modules/negotiator/HISTORY.md +108 -0
- gaia/eval/webapp/node_modules/negotiator/LICENSE +24 -0
- gaia/eval/webapp/node_modules/negotiator/README.md +203 -0
- gaia/eval/webapp/node_modules/negotiator/index.js +82 -0
- gaia/eval/webapp/node_modules/negotiator/lib/charset.js +169 -0
- gaia/eval/webapp/node_modules/negotiator/lib/encoding.js +184 -0
- gaia/eval/webapp/node_modules/negotiator/lib/language.js +179 -0
- gaia/eval/webapp/node_modules/negotiator/lib/mediaType.js +294 -0
- gaia/eval/webapp/node_modules/negotiator/package.json +42 -0
- gaia/eval/webapp/node_modules/object-inspect/.eslintrc +53 -0
- gaia/eval/webapp/node_modules/object-inspect/.github/FUNDING.yml +12 -0
- gaia/eval/webapp/node_modules/object-inspect/.nycrc +13 -0
- gaia/eval/webapp/node_modules/object-inspect/CHANGELOG.md +424 -0
- gaia/eval/webapp/node_modules/object-inspect/LICENSE +21 -0
- gaia/eval/webapp/node_modules/object-inspect/example/all.js +23 -0
- gaia/eval/webapp/node_modules/object-inspect/example/circular.js +6 -0
- gaia/eval/webapp/node_modules/object-inspect/example/fn.js +5 -0
- gaia/eval/webapp/node_modules/object-inspect/example/inspect.js +10 -0
- gaia/eval/webapp/node_modules/object-inspect/index.js +544 -0
- gaia/eval/webapp/node_modules/object-inspect/package-support.json +20 -0
- gaia/eval/webapp/node_modules/object-inspect/package.json +105 -0
- gaia/eval/webapp/node_modules/object-inspect/readme.markdown +84 -0
- gaia/eval/webapp/node_modules/object-inspect/test/bigint.js +58 -0
- gaia/eval/webapp/node_modules/object-inspect/test/browser/dom.js +15 -0
- gaia/eval/webapp/node_modules/object-inspect/test/circular.js +16 -0
- gaia/eval/webapp/node_modules/object-inspect/test/deep.js +12 -0
- gaia/eval/webapp/node_modules/object-inspect/test/element.js +53 -0
- gaia/eval/webapp/node_modules/object-inspect/test/err.js +48 -0
- gaia/eval/webapp/node_modules/object-inspect/test/fakes.js +29 -0
- gaia/eval/webapp/node_modules/object-inspect/test/fn.js +76 -0
- gaia/eval/webapp/node_modules/object-inspect/test/global.js +17 -0
- gaia/eval/webapp/node_modules/object-inspect/test/has.js +15 -0
- gaia/eval/webapp/node_modules/object-inspect/test/holes.js +15 -0
- gaia/eval/webapp/node_modules/object-inspect/test/indent-option.js +271 -0
- gaia/eval/webapp/node_modules/object-inspect/test/inspect.js +139 -0
- gaia/eval/webapp/node_modules/object-inspect/test/lowbyte.js +12 -0
- gaia/eval/webapp/node_modules/object-inspect/test/number.js +58 -0
- gaia/eval/webapp/node_modules/object-inspect/test/quoteStyle.js +26 -0
- gaia/eval/webapp/node_modules/object-inspect/test/toStringTag.js +40 -0
- gaia/eval/webapp/node_modules/object-inspect/test/undef.js +12 -0
- gaia/eval/webapp/node_modules/object-inspect/test/values.js +261 -0
- gaia/eval/webapp/node_modules/object-inspect/test-core-js.js +26 -0
- gaia/eval/webapp/node_modules/object-inspect/util.inspect.js +1 -0
- gaia/eval/webapp/node_modules/on-finished/HISTORY.md +98 -0
- gaia/eval/webapp/node_modules/on-finished/LICENSE +23 -0
- gaia/eval/webapp/node_modules/on-finished/README.md +162 -0
- gaia/eval/webapp/node_modules/on-finished/index.js +234 -0
- gaia/eval/webapp/node_modules/on-finished/package.json +39 -0
- gaia/eval/webapp/node_modules/parseurl/HISTORY.md +58 -0
- gaia/eval/webapp/node_modules/parseurl/LICENSE +24 -0
- gaia/eval/webapp/node_modules/parseurl/README.md +133 -0
- gaia/eval/webapp/node_modules/parseurl/index.js +158 -0
- gaia/eval/webapp/node_modules/parseurl/package.json +40 -0
- gaia/eval/webapp/node_modules/path/.npmignore +1 -0
- gaia/eval/webapp/node_modules/path/LICENSE +18 -0
- gaia/eval/webapp/node_modules/path/README.md +15 -0
- gaia/eval/webapp/node_modules/path/package.json +24 -0
- gaia/eval/webapp/node_modules/path/path.js +628 -0
- gaia/eval/webapp/node_modules/path-to-regexp/LICENSE +21 -0
- gaia/eval/webapp/node_modules/path-to-regexp/Readme.md +35 -0
- gaia/eval/webapp/node_modules/path-to-regexp/index.js +156 -0
- gaia/eval/webapp/node_modules/path-to-regexp/package.json +30 -0
- gaia/eval/webapp/node_modules/process/.eslintrc +21 -0
- gaia/eval/webapp/node_modules/process/LICENSE +22 -0
- gaia/eval/webapp/node_modules/process/README.md +26 -0
- gaia/eval/webapp/node_modules/process/browser.js +184 -0
- gaia/eval/webapp/node_modules/process/index.js +2 -0
- gaia/eval/webapp/node_modules/process/package.json +27 -0
- gaia/eval/webapp/node_modules/process/test.js +199 -0
- gaia/eval/webapp/node_modules/proxy-addr/HISTORY.md +161 -0
- gaia/eval/webapp/node_modules/proxy-addr/LICENSE +22 -0
- gaia/eval/webapp/node_modules/proxy-addr/README.md +139 -0
- gaia/eval/webapp/node_modules/proxy-addr/index.js +327 -0
- gaia/eval/webapp/node_modules/proxy-addr/package.json +47 -0
- gaia/eval/webapp/node_modules/qs/.editorconfig +46 -0
- gaia/eval/webapp/node_modules/qs/.eslintrc +38 -0
- gaia/eval/webapp/node_modules/qs/.github/FUNDING.yml +12 -0
- gaia/eval/webapp/node_modules/qs/.nycrc +13 -0
- gaia/eval/webapp/node_modules/qs/CHANGELOG.md +600 -0
- gaia/eval/webapp/node_modules/qs/LICENSE.md +29 -0
- gaia/eval/webapp/node_modules/qs/README.md +709 -0
- gaia/eval/webapp/node_modules/qs/dist/qs.js +90 -0
- gaia/eval/webapp/node_modules/qs/lib/formats.js +23 -0
- gaia/eval/webapp/node_modules/qs/lib/index.js +11 -0
- gaia/eval/webapp/node_modules/qs/lib/parse.js +296 -0
- gaia/eval/webapp/node_modules/qs/lib/stringify.js +351 -0
- gaia/eval/webapp/node_modules/qs/lib/utils.js +265 -0
- gaia/eval/webapp/node_modules/qs/package.json +91 -0
- gaia/eval/webapp/node_modules/qs/test/empty-keys-cases.js +267 -0
- gaia/eval/webapp/node_modules/qs/test/parse.js +1170 -0
- gaia/eval/webapp/node_modules/qs/test/stringify.js +1298 -0
- gaia/eval/webapp/node_modules/qs/test/utils.js +136 -0
- gaia/eval/webapp/node_modules/range-parser/HISTORY.md +56 -0
- gaia/eval/webapp/node_modules/range-parser/LICENSE +23 -0
- gaia/eval/webapp/node_modules/range-parser/README.md +84 -0
- gaia/eval/webapp/node_modules/range-parser/index.js +162 -0
- gaia/eval/webapp/node_modules/range-parser/package.json +44 -0
- gaia/eval/webapp/node_modules/raw-body/HISTORY.md +308 -0
- gaia/eval/webapp/node_modules/raw-body/LICENSE +22 -0
- gaia/eval/webapp/node_modules/raw-body/README.md +223 -0
- gaia/eval/webapp/node_modules/raw-body/SECURITY.md +24 -0
- gaia/eval/webapp/node_modules/raw-body/index.d.ts +87 -0
- gaia/eval/webapp/node_modules/raw-body/index.js +336 -0
- gaia/eval/webapp/node_modules/raw-body/package.json +49 -0
- gaia/eval/webapp/node_modules/safe-buffer/LICENSE +21 -0
- gaia/eval/webapp/node_modules/safe-buffer/README.md +584 -0
- gaia/eval/webapp/node_modules/safe-buffer/index.d.ts +187 -0
- gaia/eval/webapp/node_modules/safe-buffer/index.js +65 -0
- gaia/eval/webapp/node_modules/safe-buffer/package.json +51 -0
- gaia/eval/webapp/node_modules/safer-buffer/LICENSE +21 -0
- gaia/eval/webapp/node_modules/safer-buffer/Porting-Buffer.md +268 -0
- gaia/eval/webapp/node_modules/safer-buffer/Readme.md +156 -0
- gaia/eval/webapp/node_modules/safer-buffer/dangerous.js +58 -0
- gaia/eval/webapp/node_modules/safer-buffer/package.json +34 -0
- gaia/eval/webapp/node_modules/safer-buffer/safer.js +77 -0
- gaia/eval/webapp/node_modules/safer-buffer/tests.js +406 -0
- gaia/eval/webapp/node_modules/send/HISTORY.md +526 -0
- gaia/eval/webapp/node_modules/send/LICENSE +23 -0
- gaia/eval/webapp/node_modules/send/README.md +327 -0
- gaia/eval/webapp/node_modules/send/SECURITY.md +24 -0
- gaia/eval/webapp/node_modules/send/index.js +1142 -0
- gaia/eval/webapp/node_modules/send/node_modules/encodeurl/HISTORY.md +14 -0
- gaia/eval/webapp/node_modules/send/node_modules/encodeurl/LICENSE +22 -0
- gaia/eval/webapp/node_modules/send/node_modules/encodeurl/README.md +128 -0
- gaia/eval/webapp/node_modules/send/node_modules/encodeurl/index.js +60 -0
- gaia/eval/webapp/node_modules/send/node_modules/encodeurl/package.json +40 -0
- gaia/eval/webapp/node_modules/send/node_modules/ms/index.js +162 -0
- gaia/eval/webapp/node_modules/send/node_modules/ms/license.md +21 -0
- gaia/eval/webapp/node_modules/send/node_modules/ms/package.json +38 -0
- gaia/eval/webapp/node_modules/send/node_modules/ms/readme.md +59 -0
- gaia/eval/webapp/node_modules/send/package.json +62 -0
- gaia/eval/webapp/node_modules/serve-static/HISTORY.md +487 -0
- gaia/eval/webapp/node_modules/serve-static/LICENSE +25 -0
- gaia/eval/webapp/node_modules/serve-static/README.md +257 -0
- gaia/eval/webapp/node_modules/serve-static/index.js +209 -0
- gaia/eval/webapp/node_modules/serve-static/package.json +42 -0
- gaia/eval/webapp/node_modules/setprototypeof/LICENSE +13 -0
- gaia/eval/webapp/node_modules/setprototypeof/README.md +31 -0
- gaia/eval/webapp/node_modules/setprototypeof/index.d.ts +2 -0
- gaia/eval/webapp/node_modules/setprototypeof/index.js +17 -0
- gaia/eval/webapp/node_modules/setprototypeof/package.json +38 -0
- gaia/eval/webapp/node_modules/setprototypeof/test/index.js +24 -0
- gaia/eval/webapp/node_modules/side-channel/.editorconfig +9 -0
- gaia/eval/webapp/node_modules/side-channel/.eslintrc +12 -0
- gaia/eval/webapp/node_modules/side-channel/.github/FUNDING.yml +12 -0
- gaia/eval/webapp/node_modules/side-channel/.nycrc +13 -0
- gaia/eval/webapp/node_modules/side-channel/CHANGELOG.md +110 -0
- gaia/eval/webapp/node_modules/side-channel/LICENSE +21 -0
- gaia/eval/webapp/node_modules/side-channel/README.md +61 -0
- gaia/eval/webapp/node_modules/side-channel/index.d.ts +14 -0
- gaia/eval/webapp/node_modules/side-channel/index.js +43 -0
- gaia/eval/webapp/node_modules/side-channel/package.json +85 -0
- gaia/eval/webapp/node_modules/side-channel/test/index.js +104 -0
- gaia/eval/webapp/node_modules/side-channel/tsconfig.json +9 -0
- gaia/eval/webapp/node_modules/side-channel-list/.editorconfig +9 -0
- gaia/eval/webapp/node_modules/side-channel-list/.eslintrc +11 -0
- gaia/eval/webapp/node_modules/side-channel-list/.github/FUNDING.yml +12 -0
- gaia/eval/webapp/node_modules/side-channel-list/.nycrc +13 -0
- gaia/eval/webapp/node_modules/side-channel-list/CHANGELOG.md +15 -0
- gaia/eval/webapp/node_modules/side-channel-list/LICENSE +21 -0
- gaia/eval/webapp/node_modules/side-channel-list/README.md +62 -0
- gaia/eval/webapp/node_modules/side-channel-list/index.d.ts +13 -0
- gaia/eval/webapp/node_modules/side-channel-list/index.js +113 -0
- gaia/eval/webapp/node_modules/side-channel-list/list.d.ts +14 -0
- gaia/eval/webapp/node_modules/side-channel-list/package.json +77 -0
- gaia/eval/webapp/node_modules/side-channel-list/test/index.js +104 -0
- gaia/eval/webapp/node_modules/side-channel-list/tsconfig.json +9 -0
- gaia/eval/webapp/node_modules/side-channel-map/.editorconfig +9 -0
- gaia/eval/webapp/node_modules/side-channel-map/.eslintrc +11 -0
- gaia/eval/webapp/node_modules/side-channel-map/.github/FUNDING.yml +12 -0
- gaia/eval/webapp/node_modules/side-channel-map/.nycrc +13 -0
- gaia/eval/webapp/node_modules/side-channel-map/CHANGELOG.md +22 -0
- gaia/eval/webapp/node_modules/side-channel-map/LICENSE +21 -0
- gaia/eval/webapp/node_modules/side-channel-map/README.md +62 -0
- gaia/eval/webapp/node_modules/side-channel-map/index.d.ts +15 -0
- gaia/eval/webapp/node_modules/side-channel-map/index.js +68 -0
- gaia/eval/webapp/node_modules/side-channel-map/package.json +80 -0
- gaia/eval/webapp/node_modules/side-channel-map/test/index.js +114 -0
- gaia/eval/webapp/node_modules/side-channel-map/tsconfig.json +9 -0
- gaia/eval/webapp/node_modules/side-channel-weakmap/.editorconfig +9 -0
- gaia/eval/webapp/node_modules/side-channel-weakmap/.eslintrc +12 -0
- gaia/eval/webapp/node_modules/side-channel-weakmap/.github/FUNDING.yml +12 -0
- gaia/eval/webapp/node_modules/side-channel-weakmap/.nycrc +13 -0
- gaia/eval/webapp/node_modules/side-channel-weakmap/CHANGELOG.md +28 -0
- gaia/eval/webapp/node_modules/side-channel-weakmap/LICENSE +21 -0
- gaia/eval/webapp/node_modules/side-channel-weakmap/README.md +62 -0
- gaia/eval/webapp/node_modules/side-channel-weakmap/index.d.ts +15 -0
- gaia/eval/webapp/node_modules/side-channel-weakmap/index.js +84 -0
- gaia/eval/webapp/node_modules/side-channel-weakmap/package.json +87 -0
- gaia/eval/webapp/node_modules/side-channel-weakmap/test/index.js +114 -0
- gaia/eval/webapp/node_modules/side-channel-weakmap/tsconfig.json +9 -0
- gaia/eval/webapp/node_modules/statuses/HISTORY.md +82 -0
- gaia/eval/webapp/node_modules/statuses/LICENSE +23 -0
- gaia/eval/webapp/node_modules/statuses/README.md +136 -0
- gaia/eval/webapp/node_modules/statuses/codes.json +65 -0
- gaia/eval/webapp/node_modules/statuses/index.js +146 -0
- gaia/eval/webapp/node_modules/statuses/package.json +49 -0
- gaia/eval/webapp/node_modules/toidentifier/HISTORY.md +9 -0
- gaia/eval/webapp/node_modules/toidentifier/LICENSE +21 -0
- gaia/eval/webapp/node_modules/toidentifier/README.md +61 -0
- gaia/eval/webapp/node_modules/toidentifier/index.js +32 -0
- gaia/eval/webapp/node_modules/toidentifier/package.json +38 -0
- gaia/eval/webapp/node_modules/type-is/HISTORY.md +259 -0
- gaia/eval/webapp/node_modules/type-is/LICENSE +23 -0
- gaia/eval/webapp/node_modules/type-is/README.md +170 -0
- gaia/eval/webapp/node_modules/type-is/index.js +266 -0
- gaia/eval/webapp/node_modules/type-is/package.json +45 -0
- gaia/eval/webapp/node_modules/unpipe/HISTORY.md +4 -0
- gaia/eval/webapp/node_modules/unpipe/LICENSE +22 -0
- gaia/eval/webapp/node_modules/unpipe/README.md +43 -0
- gaia/eval/webapp/node_modules/unpipe/index.js +69 -0
- gaia/eval/webapp/node_modules/unpipe/package.json +27 -0
- gaia/eval/webapp/node_modules/util/LICENSE +18 -0
- gaia/eval/webapp/node_modules/util/README.md +15 -0
- gaia/eval/webapp/node_modules/util/node_modules/inherits/LICENSE +16 -0
- gaia/eval/webapp/node_modules/util/node_modules/inherits/README.md +42 -0
- gaia/eval/webapp/node_modules/util/node_modules/inherits/inherits.js +7 -0
- gaia/eval/webapp/node_modules/util/node_modules/inherits/inherits_browser.js +23 -0
- gaia/eval/webapp/node_modules/util/node_modules/inherits/package.json +29 -0
- gaia/eval/webapp/node_modules/util/package.json +35 -0
- gaia/eval/webapp/node_modules/util/support/isBuffer.js +3 -0
- gaia/eval/webapp/node_modules/util/support/isBufferBrowser.js +6 -0
- gaia/eval/webapp/node_modules/util/util.js +586 -0
- gaia/eval/webapp/node_modules/utils-merge/.npmignore +9 -0
- gaia/eval/webapp/node_modules/utils-merge/LICENSE +20 -0
- gaia/eval/webapp/node_modules/utils-merge/README.md +34 -0
- gaia/eval/webapp/node_modules/utils-merge/index.js +23 -0
- gaia/eval/webapp/node_modules/utils-merge/package.json +40 -0
- gaia/eval/webapp/node_modules/vary/HISTORY.md +39 -0
- gaia/eval/webapp/node_modules/vary/LICENSE +22 -0
- gaia/eval/webapp/node_modules/vary/README.md +101 -0
- gaia/eval/webapp/node_modules/vary/index.js +149 -0
- gaia/eval/webapp/node_modules/vary/package.json +43 -0
- gaia/eval/webapp/package-lock.json +875 -0
- gaia/eval/webapp/package.json +21 -0
- gaia/eval/webapp/public/app.js +3403 -0
- gaia/eval/webapp/public/index.html +88 -0
- gaia/eval/webapp/public/styles.css +3661 -0
- gaia/eval/webapp/server.js +416 -0
- gaia/eval/webapp/test-setup.js +73 -0
- gaia/llm/__init__.py +2 -0
- gaia/llm/lemonade_client.py +3083 -0
- gaia/llm/lemonade_manager.py +269 -0
- gaia/llm/llm_client.py +729 -0
- gaia/llm/vlm_client.py +307 -0
- gaia/logger.py +189 -0
- gaia/mcp/agent_mcp_server.py +245 -0
- gaia/mcp/blender_mcp_client.py +138 -0
- gaia/mcp/blender_mcp_server.py +648 -0
- gaia/mcp/context7_cache.py +332 -0
- gaia/mcp/external_services.py +518 -0
- gaia/mcp/mcp_bridge.py +550 -0
- gaia/mcp/servers/__init__.py +6 -0
- gaia/mcp/servers/docker_mcp.py +83 -0
- gaia/rag/__init__.py +10 -0
- gaia/rag/app.py +293 -0
- gaia/rag/demo.py +304 -0
- gaia/rag/pdf_utils.py +235 -0
- gaia/rag/sdk.py +2194 -0
- gaia/security.py +163 -0
- gaia/talk/app.py +289 -0
- gaia/talk/sdk.py +538 -0
- gaia/util.py +46 -0
- gaia/version.py +100 -0
|
@@ -0,0 +1,709 @@
|
|
|
1
|
+
# Copyright(C) 2024-2025 Advanced Micro Devices, Inc. All rights reserved.
|
|
2
|
+
# SPDX-License-Identifier: MIT
|
|
3
|
+
"""Checklist Generator for LLM-Driven Code Generation.
|
|
4
|
+
|
|
5
|
+
This module uses an LLM to generate a checklist of template invocations
|
|
6
|
+
based on the user's request and the available template catalog.
|
|
7
|
+
|
|
8
|
+
The generator:
|
|
9
|
+
1. Receives user request and project context
|
|
10
|
+
2. Sends prompt to LLM with template catalog
|
|
11
|
+
3. Parses LLM response into structured checklist
|
|
12
|
+
4. Validates checklist items against template definitions
|
|
13
|
+
|
|
14
|
+
The resulting checklist is then executed deterministically by
|
|
15
|
+
ChecklistExecutor.
|
|
16
|
+
"""
|
|
17
|
+
|
|
18
|
+
import json
|
|
19
|
+
import logging
|
|
20
|
+
import re
|
|
21
|
+
from dataclasses import dataclass, field
|
|
22
|
+
from typing import Any, Dict, List, Optional, Protocol
|
|
23
|
+
|
|
24
|
+
from .steps.base import UserContext
|
|
25
|
+
from .template_catalog import get_catalog_prompt, validate_checklist_item
|
|
26
|
+
|
|
27
|
+
logger = logging.getLogger(__name__)
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
class ChatSDK(Protocol):
|
|
31
|
+
"""Protocol for chat SDK interface."""
|
|
32
|
+
|
|
33
|
+
def send(self, message: str, timeout: int = 600, no_history: bool = False) -> Any:
|
|
34
|
+
"""Send a message and get response."""
|
|
35
|
+
...
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
@dataclass
|
|
39
|
+
class ChecklistItem:
|
|
40
|
+
"""Single item in the generated checklist.
|
|
41
|
+
|
|
42
|
+
Represents a template invocation with its parameters and
|
|
43
|
+
the LLM's reasoning for including it.
|
|
44
|
+
"""
|
|
45
|
+
|
|
46
|
+
template: str
|
|
47
|
+
params: Dict[str, Any]
|
|
48
|
+
description: str
|
|
49
|
+
|
|
50
|
+
def to_dict(self) -> Dict[str, Any]:
|
|
51
|
+
"""Convert to dictionary representation."""
|
|
52
|
+
return {
|
|
53
|
+
"template": self.template,
|
|
54
|
+
"params": self.params,
|
|
55
|
+
"description": self.description,
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
|
|
59
|
+
@dataclass
|
|
60
|
+
class GeneratedChecklist:
|
|
61
|
+
"""Complete checklist generated by LLM.
|
|
62
|
+
|
|
63
|
+
Contains the list of template invocations and the LLM's
|
|
64
|
+
overall reasoning for the chosen approach.
|
|
65
|
+
"""
|
|
66
|
+
|
|
67
|
+
items: List[ChecklistItem]
|
|
68
|
+
reasoning: str
|
|
69
|
+
raw_response: str = ""
|
|
70
|
+
validation_errors: List[str] = field(default_factory=list)
|
|
71
|
+
|
|
72
|
+
@property
|
|
73
|
+
def is_valid(self) -> bool:
|
|
74
|
+
"""Check if checklist passed validation."""
|
|
75
|
+
return len(self.validation_errors) == 0
|
|
76
|
+
|
|
77
|
+
def to_dict(self) -> Dict[str, Any]:
|
|
78
|
+
"""Convert to dictionary representation."""
|
|
79
|
+
return {
|
|
80
|
+
"reasoning": self.reasoning,
|
|
81
|
+
"checklist": [item.to_dict() for item in self.items],
|
|
82
|
+
"is_valid": self.is_valid,
|
|
83
|
+
"validation_errors": self.validation_errors,
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
|
|
87
|
+
@dataclass
|
|
88
|
+
class ProjectState:
|
|
89
|
+
"""Current state of the project for context."""
|
|
90
|
+
|
|
91
|
+
exists: bool = False
|
|
92
|
+
has_package_json: bool = False
|
|
93
|
+
has_prisma: bool = False
|
|
94
|
+
has_next_config: bool = False
|
|
95
|
+
existing_models: List[str] = field(default_factory=list)
|
|
96
|
+
existing_routes: List[str] = field(default_factory=list)
|
|
97
|
+
existing_pages: List[str] = field(default_factory=list)
|
|
98
|
+
|
|
99
|
+
def to_prompt(self) -> str:
|
|
100
|
+
"""Generate prompt-friendly description of project state."""
|
|
101
|
+
if not self.exists:
|
|
102
|
+
return "Project does not exist yet - will be created fresh."
|
|
103
|
+
|
|
104
|
+
lines = ["Current project state:"]
|
|
105
|
+
|
|
106
|
+
if self.has_package_json:
|
|
107
|
+
lines.append("- ✓ package.json exists (Node.js project)")
|
|
108
|
+
if self.has_next_config:
|
|
109
|
+
lines.append("- ✓ next.config.ts exists (Next.js configured)")
|
|
110
|
+
if self.has_prisma:
|
|
111
|
+
lines.append("- ✓ Prisma configured")
|
|
112
|
+
if self.existing_models:
|
|
113
|
+
lines.append(f" - Models: {', '.join(self.existing_models)}")
|
|
114
|
+
|
|
115
|
+
if self.existing_routes:
|
|
116
|
+
lines.append(f"- Existing API routes: {', '.join(self.existing_routes)}")
|
|
117
|
+
|
|
118
|
+
if self.existing_pages:
|
|
119
|
+
lines.append(f"- Existing pages: {', '.join(self.existing_pages)}")
|
|
120
|
+
|
|
121
|
+
return "\n".join(lines)
|
|
122
|
+
|
|
123
|
+
|
|
124
|
+
CHECKLIST_SYSTEM_PROMPT = """You are a code generation planner. Your task is to analyze the user's request and generate a checklist of template invocations that will create the requested application.
|
|
125
|
+
|
|
126
|
+
{catalog_prompt}
|
|
127
|
+
|
|
128
|
+
## Instructions
|
|
129
|
+
|
|
130
|
+
1. Analyze the user's request carefully
|
|
131
|
+
2. Consider what the user ACTUALLY wants (semantic understanding)
|
|
132
|
+
3. Select templates that will fulfill the request
|
|
133
|
+
4. Add semantic enhancements based on the request type:
|
|
134
|
+
- For "todo" apps: add checkboxes for completion status
|
|
135
|
+
- For "blog" apps: add date fields for posts
|
|
136
|
+
- For "e-commerce": add price, inventory fields
|
|
137
|
+
5. Ensure dependencies are satisfied (run setup before data, data before API, API before UI)
|
|
138
|
+
6. Generate a complete checklist that creates a working application
|
|
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
|
+
|
|
141
|
+
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
|
+
|
|
143
|
+
## IMPORTANT: Complete CRUD Applications
|
|
144
|
+
|
|
145
|
+
For any app that manages resources (todos, posts, users, etc.), you MUST generate ALL of these UI components:
|
|
146
|
+
|
|
147
|
+
1. **List page** (variant: "list") - Main page showing all items at /resources
|
|
148
|
+
2. **Form component** (variant: "form") - Reusable form for create
|
|
149
|
+
3. **New page** (variant: "new") - Create new item at /resources/new
|
|
150
|
+
4. **Edit page** (variant: "detail") - Edit single item at /resources/[id] with pre-populated form
|
|
151
|
+
|
|
152
|
+
Missing any of these will result in broken navigation! Always include all 4 variants.
|
|
153
|
+
|
|
154
|
+
## REQUIRED: Setup and Validation Commands
|
|
155
|
+
|
|
156
|
+
**CRITICAL**: The following commands are REQUIRED for a valid plan:
|
|
157
|
+
|
|
158
|
+
1. **setup_app_styling** MUST be included after creating the application (after `create_next_app`). This configures app-wide styling with modern dark theme design system.
|
|
159
|
+
|
|
160
|
+
2. **setup_testing** MUST be included after `setup_app_styling`. This sets up the testing infrastructure.
|
|
161
|
+
|
|
162
|
+
3. **generate_style_tests** MUST be included after `setup_testing`. This generates CSS integrity tests that validate the design system.
|
|
163
|
+
|
|
164
|
+
4. **The final 2 commands MUST be in this exact order:**
|
|
165
|
+
- Second-to-last: `run_typescript_check` (validates TypeScript compilation)
|
|
166
|
+
- Last: `validate_styles` (validates CSS files and design system)
|
|
167
|
+
|
|
168
|
+
These setup and validation commands are mandatory - a plan without them is INVALID.
|
|
169
|
+
|
|
170
|
+
## Output Format
|
|
171
|
+
|
|
172
|
+
Respond with ONLY a JSON object (no markdown code blocks):
|
|
173
|
+
{{
|
|
174
|
+
"reasoning": "Brief explanation of your approach and any semantic enhancements",
|
|
175
|
+
"checklist": [
|
|
176
|
+
{{"template": "template_name", "params": {{}}, "description": "Why this step is needed"}}
|
|
177
|
+
]
|
|
178
|
+
}}
|
|
179
|
+
|
|
180
|
+
Important:
|
|
181
|
+
- Use exact template names from the catalog
|
|
182
|
+
- Provide all required parameters
|
|
183
|
+
- Order items by dependency (setup first, then data, then API, then UI)
|
|
184
|
+
- Add semantic enhancements that make the app intuitive (e.g., checkboxes for todos)
|
|
185
|
+
- For CRUD apps, ALWAYS include all 4 UI variants: list, form, new, detail
|
|
186
|
+
- REQUIRED: Include `setup_app_styling` after `create_next_app`
|
|
187
|
+
- REQUIRED: Include `setup_testing` after `setup_app_styling`
|
|
188
|
+
- REQUIRED: Include `generate_style_tests` after `setup_testing`
|
|
189
|
+
- REQUIRED: End with `run_typescript_check`, then `validate_styles` as the last 2 commands
|
|
190
|
+
- When converting a raw validation error into `fix_code`, copy the exact snippet (file, line, column, and message). For example:
|
|
191
|
+
|
|
192
|
+
Raw Validation Logs (example):
|
|
193
|
+
```
|
|
194
|
+
{{"template": "run_typescript_check", "output": {{"errors": "path/to/File.tsx(10,5): error TS1234: <error text>\\n"}}}}
|
|
195
|
+
```
|
|
196
|
+
|
|
197
|
+
Corresponding checklist item:
|
|
198
|
+
```
|
|
199
|
+
{{
|
|
200
|
+
"template": "fix_code",
|
|
201
|
+
"params": {{
|
|
202
|
+
"file_path": "path/to/File.tsx",
|
|
203
|
+
"error_description": "path/to/File.tsx(10,5): error TS1234: <error text>"
|
|
204
|
+
}},
|
|
205
|
+
"description": "Fix the TypeScript compiler error reported for File.tsx."
|
|
206
|
+
}}
|
|
207
|
+
```
|
|
208
|
+
Always keep the error text verbatim so the fixer knows exactly where to edit."""
|
|
209
|
+
|
|
210
|
+
|
|
211
|
+
class ChecklistGenerator:
|
|
212
|
+
"""Generate execution checklist using LLM.
|
|
213
|
+
|
|
214
|
+
The generator sends the user request, project state, and template
|
|
215
|
+
catalog to an LLM, which returns a structured checklist of template
|
|
216
|
+
invocations.
|
|
217
|
+
"""
|
|
218
|
+
|
|
219
|
+
def __init__(self, chat_sdk: ChatSDK):
|
|
220
|
+
"""Initialize the checklist generator.
|
|
221
|
+
|
|
222
|
+
Args:
|
|
223
|
+
chat_sdk: Chat SDK instance for LLM communication
|
|
224
|
+
"""
|
|
225
|
+
self.chat = chat_sdk
|
|
226
|
+
|
|
227
|
+
def generate_initial_checklist(
|
|
228
|
+
self,
|
|
229
|
+
context: UserContext,
|
|
230
|
+
project_state: Optional[ProjectState] = None,
|
|
231
|
+
) -> GeneratedChecklist:
|
|
232
|
+
"""Generate the initial project-scaffolding checklist."""
|
|
233
|
+
if project_state is None:
|
|
234
|
+
project_state = ProjectState()
|
|
235
|
+
|
|
236
|
+
system_prompt = CHECKLIST_SYSTEM_PROMPT.format(
|
|
237
|
+
catalog_prompt=get_catalog_prompt()
|
|
238
|
+
)
|
|
239
|
+
user_prompt = self._build_initial_prompt(context, project_state)
|
|
240
|
+
full_prompt = f"{system_prompt}\n\n## User Request\n\n{user_prompt}"
|
|
241
|
+
return self._generate_from_prompt(full_prompt)
|
|
242
|
+
|
|
243
|
+
def generate_debug_checklist(
|
|
244
|
+
self,
|
|
245
|
+
context: UserContext,
|
|
246
|
+
project_state: Optional[ProjectState],
|
|
247
|
+
prior_errors: Optional[List[str]],
|
|
248
|
+
validation_logs: Optional[List[Any]],
|
|
249
|
+
) -> GeneratedChecklist:
|
|
250
|
+
"""Generate a remediation checklist to fix outstanding errors."""
|
|
251
|
+
if project_state is None:
|
|
252
|
+
project_state = ProjectState()
|
|
253
|
+
|
|
254
|
+
debug_prompt = self._build_debug_prompt(
|
|
255
|
+
context=context,
|
|
256
|
+
project_state=project_state,
|
|
257
|
+
prior_errors=prior_errors or [],
|
|
258
|
+
validation_logs=validation_logs or [],
|
|
259
|
+
)
|
|
260
|
+
system_prompt = CHECKLIST_SYSTEM_PROMPT.format(
|
|
261
|
+
catalog_prompt=get_catalog_prompt()
|
|
262
|
+
)
|
|
263
|
+
full_prompt = f"{system_prompt}\n\n## Remediation Context\n\n{debug_prompt}"
|
|
264
|
+
return self._generate_from_prompt(full_prompt)
|
|
265
|
+
|
|
266
|
+
def _generate_from_prompt(self, full_prompt: str) -> GeneratedChecklist:
|
|
267
|
+
"""Common checklist generation logic with retries."""
|
|
268
|
+
logger.debug("Generating checklist with LLM...")
|
|
269
|
+
logger.debug(f"Checklist prompt: {full_prompt}")
|
|
270
|
+
|
|
271
|
+
max_attempts = 3
|
|
272
|
+
last_failure_reason = "unknown error"
|
|
273
|
+
|
|
274
|
+
for attempt in range(1, max_attempts + 1):
|
|
275
|
+
try:
|
|
276
|
+
response = self.chat.send(full_prompt, timeout=1200)
|
|
277
|
+
|
|
278
|
+
response_text = self._extract_response_text(response)
|
|
279
|
+
|
|
280
|
+
logger.debug(f"LLM response (attempt {attempt}): {response_text}")
|
|
281
|
+
|
|
282
|
+
checklist = self._parse_checklist(response_text)
|
|
283
|
+
except Exception as exc: # pylint: disable=broad-exception-caught
|
|
284
|
+
last_failure_reason = str(exc)
|
|
285
|
+
logger.warning(
|
|
286
|
+
"Checklist generation attempt %d/%d failed: %s",
|
|
287
|
+
attempt,
|
|
288
|
+
max_attempts,
|
|
289
|
+
exc,
|
|
290
|
+
)
|
|
291
|
+
continue
|
|
292
|
+
|
|
293
|
+
if not checklist.items:
|
|
294
|
+
last_failure_reason = "LLM returned an empty checklist"
|
|
295
|
+
logger.warning(
|
|
296
|
+
"Checklist generation attempt %d/%d returned no items, retrying...",
|
|
297
|
+
attempt,
|
|
298
|
+
max_attempts,
|
|
299
|
+
)
|
|
300
|
+
continue
|
|
301
|
+
|
|
302
|
+
self._validate_checklist(checklist)
|
|
303
|
+
if checklist.validation_errors:
|
|
304
|
+
last_failure_reason = "; ".join(checklist.validation_errors)
|
|
305
|
+
logger.warning(
|
|
306
|
+
"Checklist generation attempt %d/%d failed validation: %s",
|
|
307
|
+
attempt,
|
|
308
|
+
max_attempts,
|
|
309
|
+
checklist.validation_errors,
|
|
310
|
+
)
|
|
311
|
+
continue
|
|
312
|
+
|
|
313
|
+
logger.debug(
|
|
314
|
+
"Generated checklist with %d items on attempt %d",
|
|
315
|
+
len(checklist.items),
|
|
316
|
+
attempt,
|
|
317
|
+
)
|
|
318
|
+
return checklist
|
|
319
|
+
|
|
320
|
+
raise RuntimeError(
|
|
321
|
+
f"Failed to generate a valid checklist after {max_attempts} attempts: "
|
|
322
|
+
f"{last_failure_reason}"
|
|
323
|
+
)
|
|
324
|
+
|
|
325
|
+
def _build_initial_prompt(
|
|
326
|
+
self,
|
|
327
|
+
context: UserContext,
|
|
328
|
+
project_state: ProjectState,
|
|
329
|
+
) -> str:
|
|
330
|
+
"""Build the user prompt with all context.
|
|
331
|
+
|
|
332
|
+
Args:
|
|
333
|
+
context: User context
|
|
334
|
+
project_state: Current project state
|
|
335
|
+
|
|
336
|
+
Returns:
|
|
337
|
+
Formatted user prompt string
|
|
338
|
+
"""
|
|
339
|
+
lines = [f"**User Request**: {context.user_request}"]
|
|
340
|
+
|
|
341
|
+
if context.entity_name:
|
|
342
|
+
lines.append(f"\n**Inferred Entity**: {context.entity_name}")
|
|
343
|
+
|
|
344
|
+
if context.schema_fields:
|
|
345
|
+
lines.append(f"\n**Inferred Fields**: {json.dumps(context.schema_fields)}")
|
|
346
|
+
|
|
347
|
+
lines.append(f"\n**Project Directory**: {context.project_dir}")
|
|
348
|
+
lines.append(f"\n**Language**: {context.language}")
|
|
349
|
+
lines.append(f"\n**Project Type**: {context.project_type}")
|
|
350
|
+
|
|
351
|
+
lines.append(f"\n{project_state.to_prompt()}")
|
|
352
|
+
|
|
353
|
+
if context.fix_feedback:
|
|
354
|
+
lines.append("\n**Outstanding Fix Requests**:")
|
|
355
|
+
for note in context.fix_feedback[-5:]:
|
|
356
|
+
lines.append(f"- {note}")
|
|
357
|
+
|
|
358
|
+
if context.validation_reports:
|
|
359
|
+
lines.append("\n**Recent Validation/Test Findings**:")
|
|
360
|
+
for log in context.validation_reports[-5:]:
|
|
361
|
+
status = "PASS" if log.get("success", True) else "FAIL"
|
|
362
|
+
template = log.get("template", "validation_step")
|
|
363
|
+
description = log.get("description", "")
|
|
364
|
+
lines.append(f"- [{status}] {template}: {description}")
|
|
365
|
+
if log.get("error"):
|
|
366
|
+
lines.append(f" Error: {log['error']}")
|
|
367
|
+
|
|
368
|
+
output = log.get("output", {})
|
|
369
|
+
snippet = ""
|
|
370
|
+
if isinstance(output, dict):
|
|
371
|
+
for key in ("stdout", "stderr", "message", "details"):
|
|
372
|
+
if output.get(key):
|
|
373
|
+
snippet = str(output[key])[:200]
|
|
374
|
+
break
|
|
375
|
+
if not snippet and output:
|
|
376
|
+
snippet = json.dumps(output)[:200]
|
|
377
|
+
elif output:
|
|
378
|
+
snippet = str(output)[:200]
|
|
379
|
+
if snippet:
|
|
380
|
+
lines.append(f" Output: {snippet}")
|
|
381
|
+
|
|
382
|
+
lines.append("\nGenerate a checklist to fulfill this request.")
|
|
383
|
+
|
|
384
|
+
return "\n".join(lines)
|
|
385
|
+
|
|
386
|
+
def _build_debug_prompt(
|
|
387
|
+
self,
|
|
388
|
+
context: UserContext,
|
|
389
|
+
project_state: ProjectState,
|
|
390
|
+
prior_errors: List[str],
|
|
391
|
+
validation_logs: List[Any],
|
|
392
|
+
) -> str:
|
|
393
|
+
"""Build prompt for remediation/debug checklists."""
|
|
394
|
+
lines = [
|
|
395
|
+
"You are a remediation planner for the GAIA web development agent. "
|
|
396
|
+
"The project has already been scaffolded; focus exclusively on fixing outstanding issues."
|
|
397
|
+
]
|
|
398
|
+
lines.append(f"\n**User Request**: {context.user_request}")
|
|
399
|
+
lines.append(f"\n**Project Directory**: {context.project_dir}")
|
|
400
|
+
|
|
401
|
+
if context.entity_name:
|
|
402
|
+
lines.append(f"\n**Entity**: {context.entity_name}")
|
|
403
|
+
if context.schema_fields:
|
|
404
|
+
lines.append(f"\n**Schema Fields**: {json.dumps(context.schema_fields)}")
|
|
405
|
+
|
|
406
|
+
lines.append(f"\n{project_state.to_prompt()}")
|
|
407
|
+
|
|
408
|
+
if prior_errors:
|
|
409
|
+
lines.append("\n**Execution Errors From Last Attempt:**")
|
|
410
|
+
for err in prior_errors:
|
|
411
|
+
lines.append(f"- {err}")
|
|
412
|
+
|
|
413
|
+
if validation_logs:
|
|
414
|
+
lines.append("\n**Recent Validation/Test Results:**")
|
|
415
|
+
raw_entries = []
|
|
416
|
+
for log in validation_logs[-10:]:
|
|
417
|
+
entry = log.to_dict() if hasattr(log, "to_dict") else log
|
|
418
|
+
template = entry.get("template", "unknown_step")
|
|
419
|
+
success = entry.get("success", True)
|
|
420
|
+
desc = entry.get("description", "")
|
|
421
|
+
status = "PASS" if success else "FAIL"
|
|
422
|
+
lines.append(f"- [{status}] {template}: {desc}")
|
|
423
|
+
if entry.get("error"):
|
|
424
|
+
lines.append(f" Error: {entry['error']}")
|
|
425
|
+
output = entry.get("output") or {}
|
|
426
|
+
for key in ("stdout", "stderr", "details", "message"):
|
|
427
|
+
if output.get(key):
|
|
428
|
+
snippet = str(output[key])[:200]
|
|
429
|
+
lines.append(f" Output: {snippet}")
|
|
430
|
+
break
|
|
431
|
+
raw_entries.append(entry)
|
|
432
|
+
|
|
433
|
+
if raw_entries:
|
|
434
|
+
lines.append(
|
|
435
|
+
"\n**Raw Validation Logs (exact text for follow-up fixes):**"
|
|
436
|
+
)
|
|
437
|
+
for entry in raw_entries:
|
|
438
|
+
lines.append(json.dumps(entry, ensure_ascii=False))
|
|
439
|
+
|
|
440
|
+
if context.fix_feedback:
|
|
441
|
+
lines.append("\n**Outstanding Fix Instructions:**")
|
|
442
|
+
for note in context.fix_feedback[-10:]:
|
|
443
|
+
lines.append(f"- {note}")
|
|
444
|
+
|
|
445
|
+
lines.append(
|
|
446
|
+
"\nYour job: draft a concise checklist that repairs the errors above, "
|
|
447
|
+
"regenerates any broken code, and re-runs critical validations."
|
|
448
|
+
)
|
|
449
|
+
lines.append(
|
|
450
|
+
"\n**Critical Requirements for Debug Checklists:**\n"
|
|
451
|
+
"1. Use `fix_code` to repair the specific files referenced in the failures above.\n"
|
|
452
|
+
"2. Re-run any validations or tests that previously failed once fixes are applied.\n"
|
|
453
|
+
"3. Always include `run_typescript_check` as the second-to-last command to capture current compiler errors.\n"
|
|
454
|
+
"4. Always include `validate_styles` as the final command to capture CSS/design regressions."
|
|
455
|
+
)
|
|
456
|
+
|
|
457
|
+
return "\n".join(lines)
|
|
458
|
+
|
|
459
|
+
def _extract_response_text(self, response: Any) -> str:
|
|
460
|
+
"""Extract text from LLM response.
|
|
461
|
+
|
|
462
|
+
Handles different response formats from various SDKs.
|
|
463
|
+
|
|
464
|
+
Args:
|
|
465
|
+
response: Response from chat SDK
|
|
466
|
+
|
|
467
|
+
Returns:
|
|
468
|
+
Response text string
|
|
469
|
+
"""
|
|
470
|
+
if isinstance(response, str):
|
|
471
|
+
return response
|
|
472
|
+
|
|
473
|
+
# Handle response objects with text attribute
|
|
474
|
+
if hasattr(response, "text"):
|
|
475
|
+
return response.text
|
|
476
|
+
|
|
477
|
+
# Handle response objects with content attribute
|
|
478
|
+
if hasattr(response, "content"):
|
|
479
|
+
return response.content
|
|
480
|
+
|
|
481
|
+
# Handle dict-like responses
|
|
482
|
+
if isinstance(response, dict):
|
|
483
|
+
return response.get("text", response.get("content", str(response)))
|
|
484
|
+
|
|
485
|
+
return str(response)
|
|
486
|
+
|
|
487
|
+
def _parse_checklist(self, response_text: str) -> GeneratedChecklist:
|
|
488
|
+
"""Parse LLM response into GeneratedChecklist.
|
|
489
|
+
|
|
490
|
+
Args:
|
|
491
|
+
response_text: Raw LLM response text
|
|
492
|
+
|
|
493
|
+
Returns:
|
|
494
|
+
Parsed GeneratedChecklist
|
|
495
|
+
"""
|
|
496
|
+
try:
|
|
497
|
+
# Try to extract JSON from the response
|
|
498
|
+
json_str = self._extract_json(response_text)
|
|
499
|
+
|
|
500
|
+
data = json.loads(json_str)
|
|
501
|
+
|
|
502
|
+
# Parse items
|
|
503
|
+
items = []
|
|
504
|
+
for item_data in data.get("checklist", []):
|
|
505
|
+
item = ChecklistItem(
|
|
506
|
+
template=item_data.get("template", ""),
|
|
507
|
+
params=item_data.get("params", {}),
|
|
508
|
+
description=item_data.get("description", ""),
|
|
509
|
+
)
|
|
510
|
+
items.append(item)
|
|
511
|
+
|
|
512
|
+
return GeneratedChecklist(
|
|
513
|
+
items=items,
|
|
514
|
+
reasoning=data.get("reasoning", ""),
|
|
515
|
+
raw_response=response_text,
|
|
516
|
+
)
|
|
517
|
+
|
|
518
|
+
except json.JSONDecodeError as e:
|
|
519
|
+
logger.error(f"Failed to parse checklist JSON: {e}")
|
|
520
|
+
return GeneratedChecklist(
|
|
521
|
+
items=[],
|
|
522
|
+
reasoning="",
|
|
523
|
+
raw_response=response_text,
|
|
524
|
+
validation_errors=[f"Failed to parse JSON: {str(e)}"],
|
|
525
|
+
)
|
|
526
|
+
|
|
527
|
+
def _extract_json(self, text: str) -> str:
|
|
528
|
+
"""Extract JSON from text that might contain markdown or other content.
|
|
529
|
+
|
|
530
|
+
Args:
|
|
531
|
+
text: Text that may contain JSON
|
|
532
|
+
|
|
533
|
+
Returns:
|
|
534
|
+
Extracted JSON string
|
|
535
|
+
"""
|
|
536
|
+
# Try to find JSON in markdown code block
|
|
537
|
+
code_block_match = re.search(r"```(?:json)?\s*\n?(.*?)\n?```", text, re.DOTALL)
|
|
538
|
+
if code_block_match:
|
|
539
|
+
return code_block_match.group(1).strip()
|
|
540
|
+
|
|
541
|
+
# Try to find raw JSON object
|
|
542
|
+
json_match = re.search(r"\{.*\}", text, re.DOTALL)
|
|
543
|
+
if json_match:
|
|
544
|
+
return json_match.group(0)
|
|
545
|
+
|
|
546
|
+
# Return as-is and let JSON parser handle it
|
|
547
|
+
return text.strip()
|
|
548
|
+
|
|
549
|
+
def _validate_checklist(self, checklist: GeneratedChecklist) -> None:
|
|
550
|
+
"""Validate checklist items against template definitions.
|
|
551
|
+
|
|
552
|
+
Adds validation errors to the checklist if any are found.
|
|
553
|
+
|
|
554
|
+
Args:
|
|
555
|
+
checklist: Checklist to validate (modified in place)
|
|
556
|
+
"""
|
|
557
|
+
for item in checklist.items:
|
|
558
|
+
errors = validate_checklist_item(item.template, item.params)
|
|
559
|
+
checklist.validation_errors.extend(errors)
|
|
560
|
+
|
|
561
|
+
# Check for duplicate templates (some are ok, like multiple API routes)
|
|
562
|
+
seen_templates = {}
|
|
563
|
+
for item in checklist.items:
|
|
564
|
+
key = f"{item.template}:{json.dumps(item.params, sort_keys=True)}"
|
|
565
|
+
if key in seen_templates:
|
|
566
|
+
checklist.validation_errors.append(
|
|
567
|
+
f"Duplicate checklist item: {item.template} with same params"
|
|
568
|
+
)
|
|
569
|
+
seen_templates[key] = True
|
|
570
|
+
|
|
571
|
+
# Validate required setup: setup_app_styling must come after create_next_app
|
|
572
|
+
create_app_index = None
|
|
573
|
+
setup_styling_index = None
|
|
574
|
+
setup_testing_index = None
|
|
575
|
+
for i, item in enumerate(checklist.items):
|
|
576
|
+
if item.template == "create_next_app":
|
|
577
|
+
create_app_index = i
|
|
578
|
+
if item.template == "setup_app_styling":
|
|
579
|
+
setup_styling_index = i
|
|
580
|
+
if item.template == "setup_testing":
|
|
581
|
+
setup_testing_index = i
|
|
582
|
+
|
|
583
|
+
if create_app_index is not None:
|
|
584
|
+
if setup_styling_index is None:
|
|
585
|
+
checklist.validation_errors.append(
|
|
586
|
+
"REQUIRED: 'setup_app_styling' must be included after 'create_next_app'"
|
|
587
|
+
)
|
|
588
|
+
elif setup_styling_index <= create_app_index:
|
|
589
|
+
checklist.validation_errors.append(
|
|
590
|
+
"REQUIRED: 'setup_app_styling' must come after 'create_next_app' in the checklist"
|
|
591
|
+
)
|
|
592
|
+
|
|
593
|
+
# Validate required testing setup: setup_testing must come after setup_app_styling
|
|
594
|
+
if setup_styling_index is not None:
|
|
595
|
+
if setup_testing_index is None:
|
|
596
|
+
checklist.validation_errors.append(
|
|
597
|
+
"REQUIRED: 'setup_testing' must be included after 'setup_app_styling'"
|
|
598
|
+
)
|
|
599
|
+
elif setup_testing_index <= setup_styling_index:
|
|
600
|
+
checklist.validation_errors.append(
|
|
601
|
+
"REQUIRED: 'setup_testing' must come after 'setup_app_styling' in the checklist"
|
|
602
|
+
)
|
|
603
|
+
|
|
604
|
+
# Validate required final validation commands: run_typescript_check, validate_styles
|
|
605
|
+
if len(checklist.items) < 2:
|
|
606
|
+
checklist.validation_errors.append(
|
|
607
|
+
"REQUIRED: Checklist must end with 'run_typescript_check', "
|
|
608
|
+
"'validate_styles' as the last two commands"
|
|
609
|
+
)
|
|
610
|
+
else:
|
|
611
|
+
last_item = checklist.items[-1]
|
|
612
|
+
second_last_item = checklist.items[-2]
|
|
613
|
+
|
|
614
|
+
if last_item.template != "validate_styles":
|
|
615
|
+
checklist.validation_errors.append(
|
|
616
|
+
"REQUIRED: The last command must be 'validate_styles'"
|
|
617
|
+
)
|
|
618
|
+
if second_last_item.template != "run_typescript_check":
|
|
619
|
+
checklist.validation_errors.append(
|
|
620
|
+
"REQUIRED: The second-to-last command must be 'run_typescript_check'"
|
|
621
|
+
)
|
|
622
|
+
|
|
623
|
+
# Validate generate_style_tests is included (after setup_testing)
|
|
624
|
+
generate_style_tests_index = None
|
|
625
|
+
for i, item in enumerate(checklist.items):
|
|
626
|
+
if item.template == "generate_style_tests":
|
|
627
|
+
generate_style_tests_index = i
|
|
628
|
+
|
|
629
|
+
if setup_testing_index is not None and generate_style_tests_index is None:
|
|
630
|
+
checklist.validation_errors.append(
|
|
631
|
+
"REQUIRED: 'generate_style_tests' must be included after 'setup_testing'"
|
|
632
|
+
)
|
|
633
|
+
elif (
|
|
634
|
+
generate_style_tests_index is not None
|
|
635
|
+
and setup_testing_index is not None
|
|
636
|
+
and generate_style_tests_index <= setup_testing_index
|
|
637
|
+
):
|
|
638
|
+
checklist.validation_errors.append(
|
|
639
|
+
"REQUIRED: 'generate_style_tests' must come after 'setup_testing'"
|
|
640
|
+
)
|
|
641
|
+
|
|
642
|
+
if checklist.validation_errors:
|
|
643
|
+
logger.warning(
|
|
644
|
+
f"Checklist validation errors: {checklist.validation_errors}"
|
|
645
|
+
)
|
|
646
|
+
|
|
647
|
+
|
|
648
|
+
def create_checklist_from_workflow(
|
|
649
|
+
workflow_phases: List[Any],
|
|
650
|
+
context: UserContext,
|
|
651
|
+
) -> GeneratedChecklist:
|
|
652
|
+
"""Create a checklist from existing workflow phases (for comparison/testing).
|
|
653
|
+
|
|
654
|
+
This converts the old step-based workflow into the new checklist format,
|
|
655
|
+
useful for testing and migration.
|
|
656
|
+
|
|
657
|
+
Args:
|
|
658
|
+
workflow_phases: List of WorkflowPhase objects from factory
|
|
659
|
+
context: User context
|
|
660
|
+
|
|
661
|
+
Returns:
|
|
662
|
+
GeneratedChecklist representing the workflow
|
|
663
|
+
"""
|
|
664
|
+
items = []
|
|
665
|
+
|
|
666
|
+
for phase in workflow_phases:
|
|
667
|
+
for step in phase.steps:
|
|
668
|
+
# Map step names to template names
|
|
669
|
+
template_map = {
|
|
670
|
+
"create_next_app": "create_next_app",
|
|
671
|
+
"setup_styling": "setup_app_styling",
|
|
672
|
+
"install_deps": "setup_prisma",
|
|
673
|
+
"setup_testing": "setup_testing",
|
|
674
|
+
"prisma_init": "setup_prisma",
|
|
675
|
+
"setup_prisma": "setup_prisma",
|
|
676
|
+
"manage_data_model": "generate_prisma_model",
|
|
677
|
+
"manage_api_endpoint": "generate_api_route",
|
|
678
|
+
"manage_api_endpoint_dynamic": "generate_api_route",
|
|
679
|
+
"manage_react_component": "generate_react_component",
|
|
680
|
+
"update_landing_page": "update_landing_page",
|
|
681
|
+
"validate_typescript": "run_typescript_check",
|
|
682
|
+
"validate_crud_structure": "run_typescript_check",
|
|
683
|
+
"test_crud_api": "run_typescript_check",
|
|
684
|
+
}
|
|
685
|
+
|
|
686
|
+
template_name = template_map.get(step.name, step.name)
|
|
687
|
+
|
|
688
|
+
# Extract params from step
|
|
689
|
+
params = {}
|
|
690
|
+
if hasattr(step, "get_tool_invocation"):
|
|
691
|
+
invocation = step.get_tool_invocation(context)
|
|
692
|
+
if invocation:
|
|
693
|
+
_, step_params = invocation
|
|
694
|
+
params = {
|
|
695
|
+
k: v for k, v in step_params.items() if k != "project_dir"
|
|
696
|
+
}
|
|
697
|
+
|
|
698
|
+
items.append(
|
|
699
|
+
ChecklistItem(
|
|
700
|
+
template=template_name,
|
|
701
|
+
params=params,
|
|
702
|
+
description=step.description,
|
|
703
|
+
)
|
|
704
|
+
)
|
|
705
|
+
|
|
706
|
+
return GeneratedChecklist(
|
|
707
|
+
items=items,
|
|
708
|
+
reasoning="Converted from existing workflow",
|
|
709
|
+
)
|