amd-gaia 0.14.2__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.2.dist-info → amd_gaia-0.14.3.dist-info}/METADATA +5 -2
- amd_gaia-0.14.3.dist-info/RECORD +168 -0
- {amd_gaia-0.14.2.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 +110 -33
- gaia/agents/base/api_agent.py +1 -1
- gaia/agents/base/console.py +399 -15
- 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 +36 -153
- 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 +1 -1
- gaia/agents/code/orchestration/checklist_generator.py +1 -1
- 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 +212 -1
- 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 +1 -1
- 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 +1 -1
- 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 +1 -1
- 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 +1 -1
- gaia/agents/code/tools/code_tools.py +1 -1
- 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 +1 -2
- 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/audio/__init__.py +1 -1
- gaia/audio/audio_client.py +1 -1
- gaia/audio/audio_recorder.py +1 -1
- gaia/audio/kokoro_tts.py +1 -1
- gaia/audio/whisper_asr.py +1 -1
- gaia/chat/__init__.py +1 -1
- gaia/chat/prompts.py +1 -1
- gaia/chat/sdk.py +25 -0
- gaia/cli.py +2 -2
- 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 +1 -1
- gaia/eval/claude.py +1 -1
- 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 +1 -1
- 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/security.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.2.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.2.dist-info → amd_gaia-0.14.3.dist-info}/WHEEL +0 -0
- {amd_gaia-0.14.2.dist-info → amd_gaia-0.14.3.dist-info}/licenses/LICENSE.md +0 -0
- {amd_gaia-0.14.2.dist-info → amd_gaia-0.14.3.dist-info}/top_level.txt +0 -0
gaia/database/mixin.py
ADDED
|
@@ -0,0 +1,290 @@
|
|
|
1
|
+
# Copyright(C) 2025-2026 Advanced Micro Devices, Inc. All rights reserved.
|
|
2
|
+
# SPDX-License-Identifier: MIT
|
|
3
|
+
|
|
4
|
+
"""SQLite database mixin for GAIA agents."""
|
|
5
|
+
|
|
6
|
+
import logging
|
|
7
|
+
import sqlite3
|
|
8
|
+
from contextlib import contextmanager
|
|
9
|
+
from pathlib import Path
|
|
10
|
+
from typing import Any, Dict, List, Optional, Union
|
|
11
|
+
|
|
12
|
+
logger = logging.getLogger(__name__)
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
class DatabaseMixin:
|
|
16
|
+
"""
|
|
17
|
+
Mixin providing SQLite database access for GAIA agents.
|
|
18
|
+
|
|
19
|
+
A lean, zero-dependency mixin that uses Python's built-in sqlite3 module.
|
|
20
|
+
|
|
21
|
+
Example:
|
|
22
|
+
class MyAgent(Agent, DatabaseMixin):
|
|
23
|
+
def __init__(self, **kwargs):
|
|
24
|
+
super().__init__(**kwargs)
|
|
25
|
+
self.init_db("data/app.db")
|
|
26
|
+
|
|
27
|
+
if not self.table_exists("items"):
|
|
28
|
+
self.execute('''
|
|
29
|
+
CREATE TABLE items (
|
|
30
|
+
id INTEGER PRIMARY KEY,
|
|
31
|
+
name TEXT NOT NULL
|
|
32
|
+
)
|
|
33
|
+
''')
|
|
34
|
+
|
|
35
|
+
def _register_tools(self):
|
|
36
|
+
@tool
|
|
37
|
+
def add_item(name: str) -> dict:
|
|
38
|
+
item_id = self.insert("items", {"name": name})
|
|
39
|
+
return {"id": item_id}
|
|
40
|
+
"""
|
|
41
|
+
|
|
42
|
+
_db: Optional[sqlite3.Connection] = None
|
|
43
|
+
_in_tx: bool = False
|
|
44
|
+
|
|
45
|
+
def init_db(self, path: str = ":memory:") -> None:
|
|
46
|
+
"""
|
|
47
|
+
Initialize SQLite database.
|
|
48
|
+
|
|
49
|
+
Args:
|
|
50
|
+
path: Database file path, or ":memory:" for in-memory database.
|
|
51
|
+
Parent directories are created automatically.
|
|
52
|
+
|
|
53
|
+
Example:
|
|
54
|
+
self.init_db("data/myagent.db") # File-based
|
|
55
|
+
self.init_db() # In-memory (for testing)
|
|
56
|
+
"""
|
|
57
|
+
if self._db:
|
|
58
|
+
self.close_db()
|
|
59
|
+
|
|
60
|
+
if path != ":memory:":
|
|
61
|
+
Path(path).parent.mkdir(parents=True, exist_ok=True)
|
|
62
|
+
|
|
63
|
+
self._db = sqlite3.connect(path, check_same_thread=False)
|
|
64
|
+
self._db.row_factory = sqlite3.Row
|
|
65
|
+
self._db.execute("PRAGMA foreign_keys = ON")
|
|
66
|
+
self._in_tx = False
|
|
67
|
+
logger.info("Database initialized: %s", path)
|
|
68
|
+
|
|
69
|
+
def close_db(self) -> None:
|
|
70
|
+
"""
|
|
71
|
+
Close database connection.
|
|
72
|
+
|
|
73
|
+
Safe to call multiple times.
|
|
74
|
+
"""
|
|
75
|
+
if self._db:
|
|
76
|
+
self._db.close()
|
|
77
|
+
self._db = None
|
|
78
|
+
self._in_tx = False
|
|
79
|
+
|
|
80
|
+
@property
|
|
81
|
+
def db_ready(self) -> bool:
|
|
82
|
+
"""True if database is initialized."""
|
|
83
|
+
return self._db is not None
|
|
84
|
+
|
|
85
|
+
def _require_db(self) -> None:
|
|
86
|
+
"""Raise RuntimeError if database not initialized."""
|
|
87
|
+
if not self._db:
|
|
88
|
+
raise RuntimeError("Database not initialized. Call init_db() first.")
|
|
89
|
+
|
|
90
|
+
def query(
|
|
91
|
+
self,
|
|
92
|
+
sql: str,
|
|
93
|
+
params: Optional[Dict[str, Any]] = None,
|
|
94
|
+
one: bool = False,
|
|
95
|
+
) -> Union[List[Dict[str, Any]], Optional[Dict[str, Any]]]:
|
|
96
|
+
"""
|
|
97
|
+
Execute SELECT query and return results as dicts.
|
|
98
|
+
|
|
99
|
+
Args:
|
|
100
|
+
sql: SQL query with :param_name placeholders
|
|
101
|
+
params: Dictionary of parameter values
|
|
102
|
+
one: If True, return single row dict or None
|
|
103
|
+
|
|
104
|
+
Returns:
|
|
105
|
+
List of row dicts, or single dict/None if one=True
|
|
106
|
+
|
|
107
|
+
Example:
|
|
108
|
+
# Get all
|
|
109
|
+
users = self.query("SELECT * FROM users")
|
|
110
|
+
|
|
111
|
+
# Get one
|
|
112
|
+
user = self.query(
|
|
113
|
+
"SELECT * FROM users WHERE id = :id",
|
|
114
|
+
{"id": 42},
|
|
115
|
+
one=True
|
|
116
|
+
)
|
|
117
|
+
"""
|
|
118
|
+
self._require_db()
|
|
119
|
+
cursor = self._db.execute(sql, params or {})
|
|
120
|
+
rows = [dict(row) for row in cursor.fetchall()]
|
|
121
|
+
if one:
|
|
122
|
+
return rows[0] if rows else None
|
|
123
|
+
return rows
|
|
124
|
+
|
|
125
|
+
def insert(self, table: str, data: Dict[str, Any]) -> int:
|
|
126
|
+
"""
|
|
127
|
+
Insert a row and return its ID.
|
|
128
|
+
|
|
129
|
+
Args:
|
|
130
|
+
table: Table name
|
|
131
|
+
data: Column-value dictionary
|
|
132
|
+
|
|
133
|
+
Returns:
|
|
134
|
+
The inserted row's ID (lastrowid)
|
|
135
|
+
|
|
136
|
+
Example:
|
|
137
|
+
user_id = self.insert("users", {
|
|
138
|
+
"name": "Alice",
|
|
139
|
+
"email": "alice@example.com"
|
|
140
|
+
})
|
|
141
|
+
"""
|
|
142
|
+
self._require_db()
|
|
143
|
+
cols = ", ".join(data.keys())
|
|
144
|
+
placeholders = ", ".join(f":{k}" for k in data.keys())
|
|
145
|
+
sql = f"INSERT INTO {table} ({cols}) VALUES ({placeholders})"
|
|
146
|
+
cursor = self._db.execute(sql, data)
|
|
147
|
+
if not self._in_tx:
|
|
148
|
+
self._db.commit()
|
|
149
|
+
return cursor.lastrowid
|
|
150
|
+
|
|
151
|
+
def update(
|
|
152
|
+
self,
|
|
153
|
+
table: str,
|
|
154
|
+
data: Dict[str, Any],
|
|
155
|
+
where: str,
|
|
156
|
+
params: Dict[str, Any],
|
|
157
|
+
) -> int:
|
|
158
|
+
"""
|
|
159
|
+
Update rows matching condition and return affected count.
|
|
160
|
+
|
|
161
|
+
Args:
|
|
162
|
+
table: Table name
|
|
163
|
+
data: Column-value dictionary to update
|
|
164
|
+
where: WHERE clause with :param placeholders (without WHERE keyword)
|
|
165
|
+
params: Parameters for WHERE clause
|
|
166
|
+
|
|
167
|
+
Returns:
|
|
168
|
+
Number of rows affected
|
|
169
|
+
|
|
170
|
+
Example:
|
|
171
|
+
count = self.update(
|
|
172
|
+
"users",
|
|
173
|
+
{"email": "new@example.com"},
|
|
174
|
+
"id = :id",
|
|
175
|
+
{"id": 42}
|
|
176
|
+
)
|
|
177
|
+
"""
|
|
178
|
+
self._require_db()
|
|
179
|
+
# Prefix data params with __set_ to avoid collision with where params
|
|
180
|
+
set_clause = ", ".join(f"{k} = :__set_{k}" for k in data.keys())
|
|
181
|
+
merged_params = {f"__set_{k}": v for k, v in data.items()}
|
|
182
|
+
merged_params.update(params)
|
|
183
|
+
sql = f"UPDATE {table} SET {set_clause} WHERE {where}"
|
|
184
|
+
cursor = self._db.execute(sql, merged_params)
|
|
185
|
+
if not self._in_tx:
|
|
186
|
+
self._db.commit()
|
|
187
|
+
return cursor.rowcount
|
|
188
|
+
|
|
189
|
+
def delete(self, table: str, where: str, params: Dict[str, Any]) -> int:
|
|
190
|
+
"""
|
|
191
|
+
Delete rows matching condition and return deleted count.
|
|
192
|
+
|
|
193
|
+
Args:
|
|
194
|
+
table: Table name
|
|
195
|
+
where: WHERE clause with :param placeholders (without WHERE keyword)
|
|
196
|
+
params: Parameters for WHERE clause
|
|
197
|
+
|
|
198
|
+
Returns:
|
|
199
|
+
Number of rows deleted
|
|
200
|
+
|
|
201
|
+
Example:
|
|
202
|
+
count = self.delete("sessions", "expires_at < :now", {"now": now})
|
|
203
|
+
"""
|
|
204
|
+
self._require_db()
|
|
205
|
+
sql = f"DELETE FROM {table} WHERE {where}"
|
|
206
|
+
cursor = self._db.execute(sql, params)
|
|
207
|
+
if not self._in_tx:
|
|
208
|
+
self._db.commit()
|
|
209
|
+
return cursor.rowcount
|
|
210
|
+
|
|
211
|
+
@contextmanager
|
|
212
|
+
def transaction(self):
|
|
213
|
+
"""
|
|
214
|
+
Execute operations atomically.
|
|
215
|
+
|
|
216
|
+
Auto-commits on success, rolls back on exception.
|
|
217
|
+
|
|
218
|
+
Example:
|
|
219
|
+
with self.transaction():
|
|
220
|
+
user_id = self.insert("users", {"name": "Alice"})
|
|
221
|
+
self.insert("profiles", {"user_id": user_id, "bio": "Hello"})
|
|
222
|
+
# If any operation fails, all are rolled back
|
|
223
|
+
"""
|
|
224
|
+
self._require_db()
|
|
225
|
+
self._in_tx = True
|
|
226
|
+
try:
|
|
227
|
+
yield
|
|
228
|
+
self._db.commit()
|
|
229
|
+
except Exception:
|
|
230
|
+
self._db.rollback()
|
|
231
|
+
raise
|
|
232
|
+
finally:
|
|
233
|
+
self._in_tx = False
|
|
234
|
+
|
|
235
|
+
def execute(self, sql: str) -> None:
|
|
236
|
+
"""
|
|
237
|
+
Execute raw SQL (CREATE TABLE, etc).
|
|
238
|
+
|
|
239
|
+
Supports multiple statements separated by semicolons.
|
|
240
|
+
|
|
241
|
+
WARNING: Do NOT call inside a transaction() block. This method uses
|
|
242
|
+
executescript() which auto-commits any pending transaction.
|
|
243
|
+
|
|
244
|
+
Args:
|
|
245
|
+
sql: SQL statement(s) to execute
|
|
246
|
+
|
|
247
|
+
Raises:
|
|
248
|
+
RuntimeError: If called inside a transaction() block
|
|
249
|
+
|
|
250
|
+
Example:
|
|
251
|
+
self.execute('''
|
|
252
|
+
CREATE TABLE users (
|
|
253
|
+
id INTEGER PRIMARY KEY,
|
|
254
|
+
name TEXT NOT NULL
|
|
255
|
+
);
|
|
256
|
+
CREATE TABLE posts (
|
|
257
|
+
id INTEGER PRIMARY KEY,
|
|
258
|
+
user_id INTEGER REFERENCES users(id),
|
|
259
|
+
content TEXT
|
|
260
|
+
);
|
|
261
|
+
''')
|
|
262
|
+
"""
|
|
263
|
+
self._require_db()
|
|
264
|
+
if self._in_tx:
|
|
265
|
+
raise RuntimeError(
|
|
266
|
+
"execute() cannot be called inside a transaction() block. "
|
|
267
|
+
"Use query() for SELECT or individual insert/update/delete calls."
|
|
268
|
+
)
|
|
269
|
+
self._db.executescript(sql)
|
|
270
|
+
|
|
271
|
+
def table_exists(self, name: str) -> bool:
|
|
272
|
+
"""
|
|
273
|
+
Check if a table exists in the database.
|
|
274
|
+
|
|
275
|
+
Args:
|
|
276
|
+
name: Table name to check
|
|
277
|
+
|
|
278
|
+
Returns:
|
|
279
|
+
True if table exists, False otherwise
|
|
280
|
+
|
|
281
|
+
Example:
|
|
282
|
+
if not self.table_exists("users"):
|
|
283
|
+
self.execute("CREATE TABLE users (...)")
|
|
284
|
+
"""
|
|
285
|
+
result = self.query(
|
|
286
|
+
"SELECT 1 FROM sqlite_master WHERE type='table' AND name=:name",
|
|
287
|
+
{"name": name},
|
|
288
|
+
one=True,
|
|
289
|
+
)
|
|
290
|
+
return result is not None
|
gaia/database/testing.py
ADDED
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
# Copyright(C) 2025-2026 Advanced Micro Devices, Inc. All rights reserved.
|
|
2
|
+
# SPDX-License-Identifier: MIT
|
|
3
|
+
|
|
4
|
+
"""Database testing utilities for GAIA SDK users."""
|
|
5
|
+
|
|
6
|
+
import tempfile
|
|
7
|
+
from contextlib import contextmanager
|
|
8
|
+
from pathlib import Path
|
|
9
|
+
from typing import Optional
|
|
10
|
+
|
|
11
|
+
from gaia.database.mixin import DatabaseMixin
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
class _TempDB(DatabaseMixin):
|
|
15
|
+
"""Internal helper for temp_db fixture."""
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
@contextmanager
|
|
19
|
+
def temp_db(schema: Optional[str] = None):
|
|
20
|
+
"""
|
|
21
|
+
Create a temporary SQLite database for testing.
|
|
22
|
+
|
|
23
|
+
Creates a temporary database file that is automatically cleaned up
|
|
24
|
+
after the context exits. Useful for testing agents that use DatabaseMixin.
|
|
25
|
+
|
|
26
|
+
Args:
|
|
27
|
+
schema: Optional SQL to execute on the database (CREATE TABLE, etc.)
|
|
28
|
+
|
|
29
|
+
Yields:
|
|
30
|
+
str: Path to the temporary database file
|
|
31
|
+
|
|
32
|
+
Example:
|
|
33
|
+
from gaia.database import temp_db
|
|
34
|
+
|
|
35
|
+
def test_my_agent():
|
|
36
|
+
schema = '''
|
|
37
|
+
CREATE TABLE users (
|
|
38
|
+
id INTEGER PRIMARY KEY,
|
|
39
|
+
name TEXT NOT NULL
|
|
40
|
+
)
|
|
41
|
+
'''
|
|
42
|
+
|
|
43
|
+
with temp_db(schema) as db_path:
|
|
44
|
+
agent = MyAgent(skip_lemonade=True)
|
|
45
|
+
agent.init_db(db_path) # Use temp database
|
|
46
|
+
agent.insert("users", {"name": "Alice"})
|
|
47
|
+
assert len(agent.query("SELECT * FROM users")) == 1
|
|
48
|
+
|
|
49
|
+
def test_empty_db():
|
|
50
|
+
with temp_db() as db_path:
|
|
51
|
+
agent = MyAgent(skip_lemonade=True)
|
|
52
|
+
agent.init_db(db_path)
|
|
53
|
+
# Agent can create its own schema
|
|
54
|
+
"""
|
|
55
|
+
with tempfile.TemporaryDirectory() as tmpdir:
|
|
56
|
+
db_path = str(Path(tmpdir) / "test.db")
|
|
57
|
+
|
|
58
|
+
if schema:
|
|
59
|
+
db = _TempDB()
|
|
60
|
+
db.init_db(db_path)
|
|
61
|
+
db.execute(schema)
|
|
62
|
+
db.close_db()
|
|
63
|
+
|
|
64
|
+
yield db_path
|
gaia/eval/batch_experiment.py
CHANGED
gaia/eval/claude.py
CHANGED
gaia/eval/config.py
CHANGED
gaia/eval/email_generator.py
CHANGED
gaia/eval/eval.py
CHANGED
gaia/eval/groundtruth.py
CHANGED
gaia/eval/webapp/public/app.js
CHANGED
gaia/eval/webapp/server.js
CHANGED
gaia/eval/webapp/test-setup.js
CHANGED
gaia/llm/__init__.py
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
# Copyright(C)
|
|
1
|
+
# Copyright(C) 2025-2026 Advanced Micro Devices, Inc. All rights reserved.
|
|
2
2
|
# SPDX-License-Identifier: MIT
|
gaia/llm/lemonade_client.py
CHANGED
|
@@ -381,6 +381,80 @@ def _prompt_user_for_download(
|
|
|
381
381
|
print("Please enter 'y' or 'n'")
|
|
382
382
|
|
|
383
383
|
|
|
384
|
+
def _prompt_user_for_repair(model_name: str) -> bool:
|
|
385
|
+
"""
|
|
386
|
+
Prompt user for confirmation before deleting and re-downloading a corrupt model.
|
|
387
|
+
|
|
388
|
+
Args:
|
|
389
|
+
model_name: Name of the model to repair
|
|
390
|
+
|
|
391
|
+
Returns:
|
|
392
|
+
True if user confirms, False otherwise
|
|
393
|
+
"""
|
|
394
|
+
# Check if we're in an interactive terminal
|
|
395
|
+
if not sys.stdin.isatty() or not sys.stdout.isatty():
|
|
396
|
+
# Non-interactive environment - auto-approve
|
|
397
|
+
return True
|
|
398
|
+
|
|
399
|
+
# Try to use rich for nice formatting, fall back to plain text
|
|
400
|
+
try:
|
|
401
|
+
from rich.console import Console
|
|
402
|
+
from rich.panel import Panel
|
|
403
|
+
from rich.table import Table
|
|
404
|
+
|
|
405
|
+
console = Console()
|
|
406
|
+
console.print()
|
|
407
|
+
|
|
408
|
+
# Create info table
|
|
409
|
+
table = Table(show_header=False, box=None, padding=(0, 1))
|
|
410
|
+
table.add_column(style="dim")
|
|
411
|
+
table.add_column()
|
|
412
|
+
table.add_row("Model:", model_name)
|
|
413
|
+
table.add_row(
|
|
414
|
+
"Status:", "[yellow]Download incomplete or files corrupted[/yellow]"
|
|
415
|
+
)
|
|
416
|
+
table.add_row("Action:", "Delete and re-download the model")
|
|
417
|
+
|
|
418
|
+
console.print(
|
|
419
|
+
Panel(
|
|
420
|
+
table,
|
|
421
|
+
title="[bold yellow]⚠️ Corrupt Model Download Detected[/bold yellow]",
|
|
422
|
+
border_style="yellow",
|
|
423
|
+
)
|
|
424
|
+
)
|
|
425
|
+
console.print()
|
|
426
|
+
|
|
427
|
+
while True:
|
|
428
|
+
response = input("Delete and re-download? [Y/n]: ").strip().lower()
|
|
429
|
+
if response in ("", "y", "yes"):
|
|
430
|
+
console.print("[green]✓[/green] Proceeding with repair...")
|
|
431
|
+
return True
|
|
432
|
+
elif response in ("n", "no"):
|
|
433
|
+
console.print("[dim]Cancelled.[/dim]")
|
|
434
|
+
return False
|
|
435
|
+
else:
|
|
436
|
+
console.print("[dim]Please enter 'y' or 'n'[/dim]")
|
|
437
|
+
|
|
438
|
+
except ImportError:
|
|
439
|
+
# Fall back to plain text formatting
|
|
440
|
+
print("\n" + "=" * 60)
|
|
441
|
+
print(f"{_emoji('⚠️', '[WARNING]')} Corrupt Model Download Detected")
|
|
442
|
+
print("=" * 60)
|
|
443
|
+
print(f"Model: {model_name}")
|
|
444
|
+
print("Status: Download incomplete or files corrupted")
|
|
445
|
+
print("Action: Delete and re-download the model")
|
|
446
|
+
print("=" * 60)
|
|
447
|
+
|
|
448
|
+
while True:
|
|
449
|
+
response = input("Delete and re-download? [Y/n]: ").strip().lower()
|
|
450
|
+
if response in ("", "y", "yes"):
|
|
451
|
+
return True
|
|
452
|
+
elif response in ("n", "no"):
|
|
453
|
+
return False
|
|
454
|
+
else:
|
|
455
|
+
print("Please enter 'y' or 'n'")
|
|
456
|
+
|
|
457
|
+
|
|
384
458
|
def _check_disk_space(size_gb: float, path: Optional[str] = None) -> bool:
|
|
385
459
|
"""
|
|
386
460
|
Check if there's enough disk space for download.
|
|
@@ -466,9 +540,9 @@ class LemonadeClient:
|
|
|
466
540
|
if not verbose:
|
|
467
541
|
self.log.setLevel(logging.WARNING)
|
|
468
542
|
|
|
469
|
-
self.log.
|
|
543
|
+
self.log.debug(f"Initialized Lemonade client for {host}:{port}")
|
|
470
544
|
if model:
|
|
471
|
-
self.log.
|
|
545
|
+
self.log.debug(f"Initial model set to: {model}")
|
|
472
546
|
|
|
473
547
|
def launch_server(self, log_level="info", background="none", ctx_size=None):
|
|
474
548
|
"""
|
|
@@ -685,20 +759,27 @@ class LemonadeClient:
|
|
|
685
759
|
"""
|
|
686
760
|
model_lower = model_name.lower()
|
|
687
761
|
|
|
688
|
-
#
|
|
762
|
+
# Check for MoE models first (e.g., "30b-a3b" = 30B total, 3B active)
|
|
763
|
+
# MoE models are smaller than their total parameter count suggests
|
|
764
|
+
if "a3b" in model_lower or "a2b" in model_lower:
|
|
765
|
+
return 18.0 # MoE models like Qwen3-Coder-30B-A3B are ~18GB
|
|
766
|
+
|
|
767
|
+
# Look for billion parameter indicators (dense models)
|
|
689
768
|
if "70b" in model_lower or "72b" in model_lower:
|
|
690
769
|
return 40.0 # ~40GB for 70B models
|
|
691
770
|
elif "30b" in model_lower or "34b" in model_lower:
|
|
692
|
-
return
|
|
771
|
+
return 18.0 # ~18GB for 30B models
|
|
693
772
|
elif "13b" in model_lower or "14b" in model_lower:
|
|
694
773
|
return 8.0 # ~8GB for 13B models
|
|
695
|
-
elif "7b" in model_lower:
|
|
696
|
-
return 5.0 # ~5GB for
|
|
774
|
+
elif "7b" in model_lower or "8b" in model_lower:
|
|
775
|
+
return 5.0 # ~5GB for 7-8B models
|
|
776
|
+
elif "4b" in model_lower:
|
|
777
|
+
return 2.5 # ~2.5GB for 4B models (e.g., Qwen3-VL-4B)
|
|
697
778
|
elif "3b" in model_lower:
|
|
698
779
|
return 2.0 # ~2GB for 3B models
|
|
699
|
-
elif "1b" in model_lower or "0.5b" in model_lower:
|
|
780
|
+
elif "1b" in model_lower or "0.5b" in model_lower or "0.6b" in model_lower:
|
|
700
781
|
return 1.0 # ~1GB for small models
|
|
701
|
-
elif "embed" in model_lower:
|
|
782
|
+
elif "embed" in model_lower or "nomic" in model_lower:
|
|
702
783
|
return 0.5 # Embedding models are usually small
|
|
703
784
|
else:
|
|
704
785
|
return 10.0 # Conservative default
|
|
@@ -880,6 +961,31 @@ class LemonadeClient:
|
|
|
880
961
|
]
|
|
881
962
|
)
|
|
882
963
|
|
|
964
|
+
def _is_corrupt_download_error(self, error: Union[str, Dict, Exception]) -> bool:
|
|
965
|
+
"""
|
|
966
|
+
Check if an error indicates a corrupt or incomplete model download.
|
|
967
|
+
|
|
968
|
+
Args:
|
|
969
|
+
error: Error as string, dict, or exception
|
|
970
|
+
|
|
971
|
+
Returns:
|
|
972
|
+
True if this is a corrupt/incomplete download error
|
|
973
|
+
"""
|
|
974
|
+
error_info = self._extract_error_info(error)
|
|
975
|
+
error_message = (error_info.get("message") or "").lower()
|
|
976
|
+
|
|
977
|
+
return any(
|
|
978
|
+
phrase in error_message
|
|
979
|
+
for phrase in [
|
|
980
|
+
"download validation failed",
|
|
981
|
+
"files are incomplete",
|
|
982
|
+
"files are missing",
|
|
983
|
+
"incomplete or missing",
|
|
984
|
+
"corrupted download",
|
|
985
|
+
"llama-server failed to start", # Often indicates corrupt model files
|
|
986
|
+
]
|
|
987
|
+
)
|
|
988
|
+
|
|
883
989
|
def _execute_with_auto_download(
|
|
884
990
|
self, api_call: Callable, model: str, auto_download: bool = True
|
|
885
991
|
):
|
|
@@ -2007,7 +2113,7 @@ class LemonadeClient:
|
|
|
2007
2113
|
InsufficientDiskSpaceError: If not enough disk space
|
|
2008
2114
|
LemonadeClientError: If model loading fails
|
|
2009
2115
|
"""
|
|
2010
|
-
self.log.
|
|
2116
|
+
self.log.debug(f"Loading {model_name}")
|
|
2011
2117
|
|
|
2012
2118
|
request_data = {"model_name": model_name}
|
|
2013
2119
|
if llamacpp_args:
|
|
@@ -2016,14 +2122,46 @@ class LemonadeClient:
|
|
|
2016
2122
|
|
|
2017
2123
|
try:
|
|
2018
2124
|
response = self._send_request("post", url, request_data, timeout=timeout)
|
|
2019
|
-
self.log.
|
|
2125
|
+
self.log.debug(f"Loaded {model_name} successfully: response={response}")
|
|
2020
2126
|
self.model = model_name
|
|
2021
2127
|
return response
|
|
2022
2128
|
except Exception as e:
|
|
2023
2129
|
original_error = str(e)
|
|
2024
2130
|
|
|
2131
|
+
# Check if this is a corrupt/incomplete download error
|
|
2132
|
+
if self._is_corrupt_download_error(e):
|
|
2133
|
+
self.log.warning(
|
|
2134
|
+
f"{_emoji('⚠️', '[CORRUPT]')} Model '{model_name}' has incomplete "
|
|
2135
|
+
f"or corrupted files"
|
|
2136
|
+
)
|
|
2137
|
+
|
|
2138
|
+
# Prompt user for confirmation to delete and re-download
|
|
2139
|
+
if not _prompt_user_for_repair(model_name):
|
|
2140
|
+
raise ModelDownloadCancelledError(
|
|
2141
|
+
f"User declined to repair corrupt model: {model_name}"
|
|
2142
|
+
)
|
|
2143
|
+
|
|
2144
|
+
# Delete the corrupt model
|
|
2145
|
+
self.log.info(
|
|
2146
|
+
f"{_emoji('🗑️', '[DELETE]')} Deleting corrupt model: {model_name}"
|
|
2147
|
+
)
|
|
2148
|
+
try:
|
|
2149
|
+
self.delete_model(model_name)
|
|
2150
|
+
self.log.info(
|
|
2151
|
+
f"{_emoji('✅', '[OK]')} Deleted corrupt model: {model_name}"
|
|
2152
|
+
)
|
|
2153
|
+
except Exception as delete_error:
|
|
2154
|
+
self.log.warning(f"Failed to delete corrupt model: {delete_error}")
|
|
2155
|
+
# Continue anyway - the download may still work
|
|
2156
|
+
|
|
2157
|
+
# Now trigger a fresh download by falling through to auto-download flow
|
|
2158
|
+
# (the model is now "not found" so _is_model_error will match)
|
|
2159
|
+
|
|
2025
2160
|
# Check if this is a "model not found" error and auto_download is enabled
|
|
2026
|
-
if not (
|
|
2161
|
+
if not (
|
|
2162
|
+
auto_download
|
|
2163
|
+
and (self._is_model_error(e) or self._is_corrupt_download_error(e))
|
|
2164
|
+
):
|
|
2027
2165
|
# Not a model error or auto_download disabled - re-raise
|
|
2028
2166
|
self.log.error(f"Failed to load {model_name}: {original_error}")
|
|
2029
2167
|
if isinstance(e, LemonadeClientError):
|