amd-gaia 0.14.1__py3-none-any.whl → 0.14.3__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- amd_gaia-0.14.3.dist-info/METADATA +223 -0
- amd_gaia-0.14.3.dist-info/RECORD +168 -0
- {amd_gaia-0.14.1.dist-info → amd_gaia-0.14.3.dist-info}/entry_points.txt +1 -0
- gaia/__init__.py +28 -1
- gaia/agents/__init__.py +1 -1
- gaia/agents/base/__init__.py +1 -1
- gaia/agents/base/agent.py +142 -37
- gaia/agents/base/api_agent.py +1 -1
- gaia/agents/base/console.py +400 -16
- gaia/agents/base/errors.py +237 -0
- gaia/agents/base/mcp_agent.py +1 -1
- gaia/agents/base/tools.py +1 -1
- gaia/agents/blender/agent.py +1 -1
- gaia/agents/blender/agent_simple.py +1 -1
- gaia/agents/blender/app.py +1 -1
- gaia/agents/blender/app_simple.py +1 -1
- gaia/agents/blender/core/__init__.py +1 -1
- gaia/agents/blender/core/materials.py +1 -1
- gaia/agents/blender/core/objects.py +1 -1
- gaia/agents/blender/core/rendering.py +1 -1
- gaia/agents/blender/core/scene.py +1 -1
- gaia/agents/blender/core/view.py +1 -1
- gaia/agents/chat/__init__.py +1 -1
- gaia/agents/chat/agent.py +41 -181
- gaia/agents/chat/app.py +1 -1
- gaia/agents/chat/session.py +1 -1
- gaia/agents/chat/tools/__init__.py +1 -1
- gaia/agents/chat/tools/file_tools.py +1 -1
- gaia/agents/chat/tools/rag_tools.py +1 -1
- gaia/agents/chat/tools/shell_tools.py +1 -1
- gaia/agents/code/__init__.py +1 -1
- gaia/agents/code/agent.py +3 -1
- gaia/agents/code/orchestration/__init__.py +1 -1
- gaia/agents/code/orchestration/checklist_executor.py +27 -3
- gaia/agents/code/orchestration/checklist_generator.py +8 -4
- gaia/agents/code/orchestration/factories/__init__.py +1 -1
- gaia/agents/code/orchestration/factories/base.py +1 -1
- gaia/agents/code/orchestration/factories/nextjs_factory.py +1 -1
- gaia/agents/code/orchestration/factories/python_factory.py +1 -1
- gaia/agents/code/orchestration/orchestrator.py +276 -45
- gaia/agents/code/orchestration/project_analyzer.py +1 -1
- gaia/agents/code/orchestration/steps/__init__.py +1 -1
- gaia/agents/code/orchestration/steps/base.py +1 -1
- gaia/agents/code/orchestration/steps/error_handler.py +2 -2
- gaia/agents/code/orchestration/steps/nextjs.py +1 -1
- gaia/agents/code/orchestration/steps/python.py +1 -1
- gaia/agents/code/orchestration/template_catalog.py +8 -2
- gaia/agents/code/orchestration/workflows/__init__.py +1 -1
- gaia/agents/code/orchestration/workflows/base.py +1 -1
- gaia/agents/code/orchestration/workflows/nextjs.py +1 -1
- gaia/agents/code/orchestration/workflows/python.py +1 -1
- gaia/agents/code/prompts/__init__.py +1 -1
- gaia/agents/code/prompts/base_prompt.py +1 -1
- gaia/agents/code/prompts/code_patterns.py +129 -18
- gaia/agents/code/prompts/nextjs_prompt.py +1 -1
- gaia/agents/code/prompts/python_prompt.py +1 -1
- gaia/agents/code/schema_inference.py +1 -1
- gaia/agents/code/system_prompt.py +1 -1
- gaia/agents/code/tools/__init__.py +1 -1
- gaia/agents/code/tools/cli_tools.py +1 -1
- gaia/agents/code/tools/code_formatting.py +2 -2
- gaia/agents/code/tools/code_tools.py +2 -2
- gaia/agents/code/tools/error_fixing.py +1 -1
- gaia/agents/code/tools/external_tools.py +1 -1
- gaia/agents/code/tools/prisma_tools.py +1 -1
- gaia/agents/code/tools/project_management.py +1 -1
- gaia/agents/code/tools/testing.py +1 -1
- gaia/agents/code/tools/typescript_tools.py +1 -1
- gaia/agents/code/tools/validation_parsing.py +1 -1
- gaia/agents/code/tools/validation_tools.py +5 -2
- gaia/agents/code/tools/web_dev_tools.py +17 -3
- gaia/agents/docker/__init__.py +1 -1
- gaia/agents/emr/__init__.py +8 -0
- gaia/agents/emr/agent.py +1506 -0
- gaia/agents/emr/cli.py +1322 -0
- gaia/agents/emr/constants.py +475 -0
- gaia/agents/emr/dashboard/__init__.py +4 -0
- gaia/agents/emr/dashboard/server.py +1974 -0
- gaia/agents/routing/__init__.py +1 -1
- gaia/agents/routing/agent.py +65 -7
- gaia/agents/routing/system_prompt.py +1 -1
- gaia/api/__init__.py +1 -1
- gaia/api/agent_registry.py +1 -1
- gaia/api/app.py +1 -1
- gaia/api/openai_server.py +1 -1
- gaia/api/schemas.py +1 -1
- gaia/api/sse_handler.py +5 -2
- gaia/apps/__init__.py +1 -1
- gaia/apps/llm/__init__.py +1 -1
- gaia/apps/summarize/pdf_formatter.py +1 -1
- gaia/audio/__init__.py +1 -1
- gaia/audio/audio_client.py +3 -3
- gaia/audio/audio_recorder.py +1 -1
- gaia/audio/kokoro_tts.py +3 -3
- gaia/audio/whisper_asr.py +3 -3
- gaia/chat/__init__.py +1 -1
- gaia/chat/prompts.py +1 -1
- gaia/chat/sdk.py +26 -1
- gaia/cli.py +18 -18
- gaia/database/__init__.py +10 -0
- gaia/database/agent.py +176 -0
- gaia/database/mixin.py +290 -0
- gaia/database/testing.py +64 -0
- gaia/eval/batch_experiment.py +2 -2
- gaia/eval/claude.py +5 -5
- gaia/eval/config.py +1 -1
- gaia/eval/email_generator.py +1 -1
- gaia/eval/eval.py +1 -1
- gaia/eval/groundtruth.py +1 -1
- gaia/eval/transcript_generator.py +1 -1
- gaia/eval/webapp/public/app.js +1 -1
- gaia/eval/webapp/server.js +1 -1
- gaia/eval/webapp/test-setup.js +1 -1
- gaia/llm/__init__.py +1 -1
- gaia/llm/lemonade_client.py +149 -11
- gaia/llm/lemonade_manager.py +36 -11
- gaia/llm/llm_client.py +2 -2
- gaia/llm/vlm_client.py +93 -18
- gaia/logger.py +1 -1
- gaia/mcp/agent_mcp_server.py +1 -1
- gaia/mcp/blender_mcp_client.py +1 -1
- gaia/mcp/blender_mcp_server.py +1 -1
- gaia/mcp/context7_cache.py +1 -1
- gaia/mcp/servers/__init__.py +1 -1
- gaia/mcp/servers/docker_mcp.py +1 -1
- gaia/rag/demo.py +5 -5
- gaia/rag/pdf_utils.py +1 -1
- gaia/rag/sdk.py +2 -2
- gaia/security.py +1 -1
- gaia/talk/sdk.py +1 -1
- gaia/testing/__init__.py +87 -0
- gaia/testing/assertions.py +330 -0
- gaia/testing/fixtures.py +333 -0
- gaia/testing/mocks.py +493 -0
- gaia/util.py +1 -1
- gaia/utils/__init__.py +33 -0
- gaia/utils/file_watcher.py +675 -0
- gaia/utils/parsing.py +223 -0
- gaia/version.py +2 -2
- amd_gaia-0.14.1.dist-info/METADATA +0 -768
- amd_gaia-0.14.1.dist-info/RECORD +0 -800
- gaia/eval/webapp/node_modules/.bin/mime +0 -16
- gaia/eval/webapp/node_modules/.bin/mime.cmd +0 -17
- gaia/eval/webapp/node_modules/.bin/mime.ps1 +0 -28
- gaia/eval/webapp/node_modules/.package-lock.json +0 -865
- gaia/eval/webapp/node_modules/accepts/HISTORY.md +0 -243
- gaia/eval/webapp/node_modules/accepts/LICENSE +0 -23
- gaia/eval/webapp/node_modules/accepts/README.md +0 -140
- gaia/eval/webapp/node_modules/accepts/index.js +0 -238
- gaia/eval/webapp/node_modules/accepts/package.json +0 -47
- gaia/eval/webapp/node_modules/array-flatten/LICENSE +0 -21
- gaia/eval/webapp/node_modules/array-flatten/README.md +0 -43
- gaia/eval/webapp/node_modules/array-flatten/array-flatten.js +0 -64
- gaia/eval/webapp/node_modules/array-flatten/package.json +0 -39
- gaia/eval/webapp/node_modules/body-parser/HISTORY.md +0 -672
- gaia/eval/webapp/node_modules/body-parser/LICENSE +0 -23
- gaia/eval/webapp/node_modules/body-parser/README.md +0 -476
- gaia/eval/webapp/node_modules/body-parser/SECURITY.md +0 -25
- gaia/eval/webapp/node_modules/body-parser/index.js +0 -156
- gaia/eval/webapp/node_modules/body-parser/lib/read.js +0 -205
- gaia/eval/webapp/node_modules/body-parser/lib/types/json.js +0 -247
- gaia/eval/webapp/node_modules/body-parser/lib/types/raw.js +0 -101
- gaia/eval/webapp/node_modules/body-parser/lib/types/text.js +0 -121
- gaia/eval/webapp/node_modules/body-parser/lib/types/urlencoded.js +0 -307
- gaia/eval/webapp/node_modules/body-parser/package.json +0 -56
- gaia/eval/webapp/node_modules/bytes/History.md +0 -97
- gaia/eval/webapp/node_modules/bytes/LICENSE +0 -23
- gaia/eval/webapp/node_modules/bytes/Readme.md +0 -152
- gaia/eval/webapp/node_modules/bytes/index.js +0 -170
- gaia/eval/webapp/node_modules/bytes/package.json +0 -42
- gaia/eval/webapp/node_modules/call-bind-apply-helpers/.eslintrc +0 -17
- gaia/eval/webapp/node_modules/call-bind-apply-helpers/.github/FUNDING.yml +0 -12
- gaia/eval/webapp/node_modules/call-bind-apply-helpers/.nycrc +0 -9
- gaia/eval/webapp/node_modules/call-bind-apply-helpers/CHANGELOG.md +0 -30
- gaia/eval/webapp/node_modules/call-bind-apply-helpers/LICENSE +0 -21
- gaia/eval/webapp/node_modules/call-bind-apply-helpers/README.md +0 -62
- gaia/eval/webapp/node_modules/call-bind-apply-helpers/actualApply.d.ts +0 -1
- gaia/eval/webapp/node_modules/call-bind-apply-helpers/actualApply.js +0 -10
- gaia/eval/webapp/node_modules/call-bind-apply-helpers/applyBind.d.ts +0 -19
- gaia/eval/webapp/node_modules/call-bind-apply-helpers/applyBind.js +0 -10
- gaia/eval/webapp/node_modules/call-bind-apply-helpers/functionApply.d.ts +0 -1
- gaia/eval/webapp/node_modules/call-bind-apply-helpers/functionApply.js +0 -4
- gaia/eval/webapp/node_modules/call-bind-apply-helpers/functionCall.d.ts +0 -1
- gaia/eval/webapp/node_modules/call-bind-apply-helpers/functionCall.js +0 -4
- gaia/eval/webapp/node_modules/call-bind-apply-helpers/index.d.ts +0 -64
- gaia/eval/webapp/node_modules/call-bind-apply-helpers/index.js +0 -15
- gaia/eval/webapp/node_modules/call-bind-apply-helpers/package.json +0 -85
- gaia/eval/webapp/node_modules/call-bind-apply-helpers/reflectApply.d.ts +0 -3
- gaia/eval/webapp/node_modules/call-bind-apply-helpers/reflectApply.js +0 -4
- gaia/eval/webapp/node_modules/call-bind-apply-helpers/test/index.js +0 -63
- gaia/eval/webapp/node_modules/call-bind-apply-helpers/tsconfig.json +0 -9
- gaia/eval/webapp/node_modules/call-bound/.eslintrc +0 -13
- gaia/eval/webapp/node_modules/call-bound/.github/FUNDING.yml +0 -12
- gaia/eval/webapp/node_modules/call-bound/.nycrc +0 -9
- gaia/eval/webapp/node_modules/call-bound/CHANGELOG.md +0 -42
- gaia/eval/webapp/node_modules/call-bound/LICENSE +0 -21
- gaia/eval/webapp/node_modules/call-bound/README.md +0 -53
- gaia/eval/webapp/node_modules/call-bound/index.d.ts +0 -94
- gaia/eval/webapp/node_modules/call-bound/index.js +0 -19
- gaia/eval/webapp/node_modules/call-bound/package.json +0 -99
- gaia/eval/webapp/node_modules/call-bound/test/index.js +0 -61
- gaia/eval/webapp/node_modules/call-bound/tsconfig.json +0 -10
- gaia/eval/webapp/node_modules/content-disposition/HISTORY.md +0 -60
- gaia/eval/webapp/node_modules/content-disposition/LICENSE +0 -22
- gaia/eval/webapp/node_modules/content-disposition/README.md +0 -142
- gaia/eval/webapp/node_modules/content-disposition/index.js +0 -458
- gaia/eval/webapp/node_modules/content-disposition/package.json +0 -44
- gaia/eval/webapp/node_modules/content-type/HISTORY.md +0 -29
- gaia/eval/webapp/node_modules/content-type/LICENSE +0 -22
- gaia/eval/webapp/node_modules/content-type/README.md +0 -94
- gaia/eval/webapp/node_modules/content-type/index.js +0 -225
- gaia/eval/webapp/node_modules/content-type/package.json +0 -42
- gaia/eval/webapp/node_modules/cookie/LICENSE +0 -24
- gaia/eval/webapp/node_modules/cookie/README.md +0 -317
- gaia/eval/webapp/node_modules/cookie/SECURITY.md +0 -25
- gaia/eval/webapp/node_modules/cookie/index.js +0 -334
- gaia/eval/webapp/node_modules/cookie/package.json +0 -44
- gaia/eval/webapp/node_modules/cookie-signature/.npmignore +0 -4
- gaia/eval/webapp/node_modules/cookie-signature/History.md +0 -38
- gaia/eval/webapp/node_modules/cookie-signature/Readme.md +0 -42
- gaia/eval/webapp/node_modules/cookie-signature/index.js +0 -51
- gaia/eval/webapp/node_modules/cookie-signature/package.json +0 -18
- gaia/eval/webapp/node_modules/debug/.coveralls.yml +0 -1
- gaia/eval/webapp/node_modules/debug/.eslintrc +0 -11
- gaia/eval/webapp/node_modules/debug/.npmignore +0 -9
- gaia/eval/webapp/node_modules/debug/.travis.yml +0 -14
- gaia/eval/webapp/node_modules/debug/CHANGELOG.md +0 -362
- gaia/eval/webapp/node_modules/debug/LICENSE +0 -19
- gaia/eval/webapp/node_modules/debug/Makefile +0 -50
- gaia/eval/webapp/node_modules/debug/README.md +0 -312
- gaia/eval/webapp/node_modules/debug/component.json +0 -19
- gaia/eval/webapp/node_modules/debug/karma.conf.js +0 -70
- gaia/eval/webapp/node_modules/debug/node.js +0 -1
- gaia/eval/webapp/node_modules/debug/package.json +0 -49
- gaia/eval/webapp/node_modules/debug/src/browser.js +0 -185
- gaia/eval/webapp/node_modules/debug/src/debug.js +0 -202
- gaia/eval/webapp/node_modules/debug/src/index.js +0 -10
- gaia/eval/webapp/node_modules/debug/src/inspector-log.js +0 -15
- gaia/eval/webapp/node_modules/debug/src/node.js +0 -248
- gaia/eval/webapp/node_modules/depd/History.md +0 -103
- gaia/eval/webapp/node_modules/depd/LICENSE +0 -22
- gaia/eval/webapp/node_modules/depd/Readme.md +0 -280
- gaia/eval/webapp/node_modules/depd/index.js +0 -538
- gaia/eval/webapp/node_modules/depd/lib/browser/index.js +0 -77
- gaia/eval/webapp/node_modules/depd/package.json +0 -45
- gaia/eval/webapp/node_modules/destroy/LICENSE +0 -23
- gaia/eval/webapp/node_modules/destroy/README.md +0 -63
- gaia/eval/webapp/node_modules/destroy/index.js +0 -209
- gaia/eval/webapp/node_modules/destroy/package.json +0 -48
- gaia/eval/webapp/node_modules/dunder-proto/.eslintrc +0 -5
- gaia/eval/webapp/node_modules/dunder-proto/.github/FUNDING.yml +0 -12
- gaia/eval/webapp/node_modules/dunder-proto/.nycrc +0 -13
- gaia/eval/webapp/node_modules/dunder-proto/CHANGELOG.md +0 -24
- gaia/eval/webapp/node_modules/dunder-proto/LICENSE +0 -21
- gaia/eval/webapp/node_modules/dunder-proto/README.md +0 -54
- gaia/eval/webapp/node_modules/dunder-proto/get.d.ts +0 -5
- gaia/eval/webapp/node_modules/dunder-proto/get.js +0 -30
- gaia/eval/webapp/node_modules/dunder-proto/package.json +0 -76
- gaia/eval/webapp/node_modules/dunder-proto/set.d.ts +0 -5
- gaia/eval/webapp/node_modules/dunder-proto/set.js +0 -35
- gaia/eval/webapp/node_modules/dunder-proto/test/get.js +0 -34
- gaia/eval/webapp/node_modules/dunder-proto/test/index.js +0 -4
- gaia/eval/webapp/node_modules/dunder-proto/test/set.js +0 -50
- gaia/eval/webapp/node_modules/dunder-proto/tsconfig.json +0 -9
- gaia/eval/webapp/node_modules/ee-first/LICENSE +0 -22
- gaia/eval/webapp/node_modules/ee-first/README.md +0 -80
- gaia/eval/webapp/node_modules/ee-first/index.js +0 -95
- gaia/eval/webapp/node_modules/ee-first/package.json +0 -29
- gaia/eval/webapp/node_modules/encodeurl/LICENSE +0 -22
- gaia/eval/webapp/node_modules/encodeurl/README.md +0 -109
- gaia/eval/webapp/node_modules/encodeurl/index.js +0 -60
- gaia/eval/webapp/node_modules/encodeurl/package.json +0 -40
- gaia/eval/webapp/node_modules/es-define-property/.eslintrc +0 -13
- gaia/eval/webapp/node_modules/es-define-property/.github/FUNDING.yml +0 -12
- gaia/eval/webapp/node_modules/es-define-property/.nycrc +0 -9
- gaia/eval/webapp/node_modules/es-define-property/CHANGELOG.md +0 -29
- gaia/eval/webapp/node_modules/es-define-property/LICENSE +0 -21
- gaia/eval/webapp/node_modules/es-define-property/README.md +0 -49
- gaia/eval/webapp/node_modules/es-define-property/index.d.ts +0 -3
- gaia/eval/webapp/node_modules/es-define-property/index.js +0 -14
- gaia/eval/webapp/node_modules/es-define-property/package.json +0 -81
- gaia/eval/webapp/node_modules/es-define-property/test/index.js +0 -56
- gaia/eval/webapp/node_modules/es-define-property/tsconfig.json +0 -10
- gaia/eval/webapp/node_modules/es-errors/.eslintrc +0 -5
- gaia/eval/webapp/node_modules/es-errors/.github/FUNDING.yml +0 -12
- gaia/eval/webapp/node_modules/es-errors/CHANGELOG.md +0 -40
- gaia/eval/webapp/node_modules/es-errors/LICENSE +0 -21
- gaia/eval/webapp/node_modules/es-errors/README.md +0 -55
- gaia/eval/webapp/node_modules/es-errors/eval.d.ts +0 -3
- gaia/eval/webapp/node_modules/es-errors/eval.js +0 -4
- gaia/eval/webapp/node_modules/es-errors/index.d.ts +0 -3
- gaia/eval/webapp/node_modules/es-errors/index.js +0 -4
- gaia/eval/webapp/node_modules/es-errors/package.json +0 -80
- gaia/eval/webapp/node_modules/es-errors/range.d.ts +0 -3
- gaia/eval/webapp/node_modules/es-errors/range.js +0 -4
- gaia/eval/webapp/node_modules/es-errors/ref.d.ts +0 -3
- gaia/eval/webapp/node_modules/es-errors/ref.js +0 -4
- gaia/eval/webapp/node_modules/es-errors/syntax.d.ts +0 -3
- gaia/eval/webapp/node_modules/es-errors/syntax.js +0 -4
- gaia/eval/webapp/node_modules/es-errors/test/index.js +0 -19
- gaia/eval/webapp/node_modules/es-errors/tsconfig.json +0 -49
- gaia/eval/webapp/node_modules/es-errors/type.d.ts +0 -3
- gaia/eval/webapp/node_modules/es-errors/type.js +0 -4
- gaia/eval/webapp/node_modules/es-errors/uri.d.ts +0 -3
- gaia/eval/webapp/node_modules/es-errors/uri.js +0 -4
- gaia/eval/webapp/node_modules/es-object-atoms/.eslintrc +0 -16
- gaia/eval/webapp/node_modules/es-object-atoms/.github/FUNDING.yml +0 -12
- gaia/eval/webapp/node_modules/es-object-atoms/CHANGELOG.md +0 -37
- gaia/eval/webapp/node_modules/es-object-atoms/LICENSE +0 -21
- gaia/eval/webapp/node_modules/es-object-atoms/README.md +0 -63
- gaia/eval/webapp/node_modules/es-object-atoms/RequireObjectCoercible.d.ts +0 -3
- gaia/eval/webapp/node_modules/es-object-atoms/RequireObjectCoercible.js +0 -11
- gaia/eval/webapp/node_modules/es-object-atoms/ToObject.d.ts +0 -7
- gaia/eval/webapp/node_modules/es-object-atoms/ToObject.js +0 -10
- gaia/eval/webapp/node_modules/es-object-atoms/index.d.ts +0 -3
- gaia/eval/webapp/node_modules/es-object-atoms/index.js +0 -4
- gaia/eval/webapp/node_modules/es-object-atoms/isObject.d.ts +0 -3
- gaia/eval/webapp/node_modules/es-object-atoms/isObject.js +0 -6
- gaia/eval/webapp/node_modules/es-object-atoms/package.json +0 -80
- gaia/eval/webapp/node_modules/es-object-atoms/test/index.js +0 -38
- gaia/eval/webapp/node_modules/es-object-atoms/tsconfig.json +0 -6
- gaia/eval/webapp/node_modules/escape-html/LICENSE +0 -24
- gaia/eval/webapp/node_modules/escape-html/Readme.md +0 -43
- gaia/eval/webapp/node_modules/escape-html/index.js +0 -78
- gaia/eval/webapp/node_modules/escape-html/package.json +0 -24
- gaia/eval/webapp/node_modules/etag/HISTORY.md +0 -83
- gaia/eval/webapp/node_modules/etag/LICENSE +0 -22
- gaia/eval/webapp/node_modules/etag/README.md +0 -159
- gaia/eval/webapp/node_modules/etag/index.js +0 -131
- gaia/eval/webapp/node_modules/etag/package.json +0 -47
- gaia/eval/webapp/node_modules/express/History.md +0 -3656
- gaia/eval/webapp/node_modules/express/LICENSE +0 -24
- gaia/eval/webapp/node_modules/express/Readme.md +0 -260
- gaia/eval/webapp/node_modules/express/index.js +0 -11
- gaia/eval/webapp/node_modules/express/lib/application.js +0 -661
- gaia/eval/webapp/node_modules/express/lib/express.js +0 -116
- gaia/eval/webapp/node_modules/express/lib/middleware/init.js +0 -43
- gaia/eval/webapp/node_modules/express/lib/middleware/query.js +0 -47
- gaia/eval/webapp/node_modules/express/lib/request.js +0 -525
- gaia/eval/webapp/node_modules/express/lib/response.js +0 -1179
- gaia/eval/webapp/node_modules/express/lib/router/index.js +0 -673
- gaia/eval/webapp/node_modules/express/lib/router/layer.js +0 -181
- gaia/eval/webapp/node_modules/express/lib/router/route.js +0 -230
- gaia/eval/webapp/node_modules/express/lib/utils.js +0 -303
- gaia/eval/webapp/node_modules/express/lib/view.js +0 -182
- gaia/eval/webapp/node_modules/express/package.json +0 -102
- gaia/eval/webapp/node_modules/finalhandler/HISTORY.md +0 -210
- gaia/eval/webapp/node_modules/finalhandler/LICENSE +0 -22
- gaia/eval/webapp/node_modules/finalhandler/README.md +0 -147
- gaia/eval/webapp/node_modules/finalhandler/SECURITY.md +0 -25
- gaia/eval/webapp/node_modules/finalhandler/index.js +0 -341
- gaia/eval/webapp/node_modules/finalhandler/package.json +0 -47
- gaia/eval/webapp/node_modules/forwarded/HISTORY.md +0 -21
- gaia/eval/webapp/node_modules/forwarded/LICENSE +0 -22
- gaia/eval/webapp/node_modules/forwarded/README.md +0 -57
- gaia/eval/webapp/node_modules/forwarded/index.js +0 -90
- gaia/eval/webapp/node_modules/forwarded/package.json +0 -45
- gaia/eval/webapp/node_modules/fresh/HISTORY.md +0 -70
- gaia/eval/webapp/node_modules/fresh/LICENSE +0 -23
- gaia/eval/webapp/node_modules/fresh/README.md +0 -119
- gaia/eval/webapp/node_modules/fresh/index.js +0 -137
- gaia/eval/webapp/node_modules/fresh/package.json +0 -46
- gaia/eval/webapp/node_modules/fs/README.md +0 -9
- gaia/eval/webapp/node_modules/fs/package.json +0 -20
- gaia/eval/webapp/node_modules/function-bind/.eslintrc +0 -21
- gaia/eval/webapp/node_modules/function-bind/.github/FUNDING.yml +0 -12
- gaia/eval/webapp/node_modules/function-bind/.github/SECURITY.md +0 -3
- gaia/eval/webapp/node_modules/function-bind/.nycrc +0 -13
- gaia/eval/webapp/node_modules/function-bind/CHANGELOG.md +0 -136
- gaia/eval/webapp/node_modules/function-bind/LICENSE +0 -20
- gaia/eval/webapp/node_modules/function-bind/README.md +0 -46
- gaia/eval/webapp/node_modules/function-bind/implementation.js +0 -84
- gaia/eval/webapp/node_modules/function-bind/index.js +0 -5
- gaia/eval/webapp/node_modules/function-bind/package.json +0 -87
- gaia/eval/webapp/node_modules/function-bind/test/.eslintrc +0 -9
- gaia/eval/webapp/node_modules/function-bind/test/index.js +0 -252
- gaia/eval/webapp/node_modules/get-intrinsic/.eslintrc +0 -42
- gaia/eval/webapp/node_modules/get-intrinsic/.github/FUNDING.yml +0 -12
- gaia/eval/webapp/node_modules/get-intrinsic/.nycrc +0 -9
- gaia/eval/webapp/node_modules/get-intrinsic/CHANGELOG.md +0 -186
- gaia/eval/webapp/node_modules/get-intrinsic/LICENSE +0 -21
- gaia/eval/webapp/node_modules/get-intrinsic/README.md +0 -71
- gaia/eval/webapp/node_modules/get-intrinsic/index.js +0 -378
- gaia/eval/webapp/node_modules/get-intrinsic/package.json +0 -97
- gaia/eval/webapp/node_modules/get-intrinsic/test/GetIntrinsic.js +0 -274
- gaia/eval/webapp/node_modules/get-proto/.eslintrc +0 -10
- gaia/eval/webapp/node_modules/get-proto/.github/FUNDING.yml +0 -12
- gaia/eval/webapp/node_modules/get-proto/.nycrc +0 -9
- gaia/eval/webapp/node_modules/get-proto/CHANGELOG.md +0 -21
- gaia/eval/webapp/node_modules/get-proto/LICENSE +0 -21
- gaia/eval/webapp/node_modules/get-proto/Object.getPrototypeOf.d.ts +0 -5
- gaia/eval/webapp/node_modules/get-proto/Object.getPrototypeOf.js +0 -6
- gaia/eval/webapp/node_modules/get-proto/README.md +0 -50
- gaia/eval/webapp/node_modules/get-proto/Reflect.getPrototypeOf.d.ts +0 -3
- gaia/eval/webapp/node_modules/get-proto/Reflect.getPrototypeOf.js +0 -4
- gaia/eval/webapp/node_modules/get-proto/index.d.ts +0 -5
- gaia/eval/webapp/node_modules/get-proto/index.js +0 -27
- gaia/eval/webapp/node_modules/get-proto/package.json +0 -81
- gaia/eval/webapp/node_modules/get-proto/test/index.js +0 -68
- gaia/eval/webapp/node_modules/get-proto/tsconfig.json +0 -9
- gaia/eval/webapp/node_modules/gopd/.eslintrc +0 -16
- gaia/eval/webapp/node_modules/gopd/.github/FUNDING.yml +0 -12
- gaia/eval/webapp/node_modules/gopd/CHANGELOG.md +0 -45
- gaia/eval/webapp/node_modules/gopd/LICENSE +0 -21
- gaia/eval/webapp/node_modules/gopd/README.md +0 -40
- gaia/eval/webapp/node_modules/gopd/gOPD.d.ts +0 -1
- gaia/eval/webapp/node_modules/gopd/gOPD.js +0 -4
- gaia/eval/webapp/node_modules/gopd/index.d.ts +0 -5
- gaia/eval/webapp/node_modules/gopd/index.js +0 -15
- gaia/eval/webapp/node_modules/gopd/package.json +0 -77
- gaia/eval/webapp/node_modules/gopd/test/index.js +0 -36
- gaia/eval/webapp/node_modules/gopd/tsconfig.json +0 -9
- gaia/eval/webapp/node_modules/has-symbols/.eslintrc +0 -11
- gaia/eval/webapp/node_modules/has-symbols/.github/FUNDING.yml +0 -12
- gaia/eval/webapp/node_modules/has-symbols/.nycrc +0 -9
- gaia/eval/webapp/node_modules/has-symbols/CHANGELOG.md +0 -91
- gaia/eval/webapp/node_modules/has-symbols/LICENSE +0 -21
- gaia/eval/webapp/node_modules/has-symbols/README.md +0 -46
- gaia/eval/webapp/node_modules/has-symbols/index.d.ts +0 -3
- gaia/eval/webapp/node_modules/has-symbols/index.js +0 -14
- gaia/eval/webapp/node_modules/has-symbols/package.json +0 -111
- gaia/eval/webapp/node_modules/has-symbols/shams.d.ts +0 -3
- gaia/eval/webapp/node_modules/has-symbols/shams.js +0 -45
- gaia/eval/webapp/node_modules/has-symbols/test/index.js +0 -22
- gaia/eval/webapp/node_modules/has-symbols/test/shams/core-js.js +0 -29
- gaia/eval/webapp/node_modules/has-symbols/test/shams/get-own-property-symbols.js +0 -29
- gaia/eval/webapp/node_modules/has-symbols/test/tests.js +0 -58
- gaia/eval/webapp/node_modules/has-symbols/tsconfig.json +0 -10
- gaia/eval/webapp/node_modules/hasown/.eslintrc +0 -5
- gaia/eval/webapp/node_modules/hasown/.github/FUNDING.yml +0 -12
- gaia/eval/webapp/node_modules/hasown/.nycrc +0 -13
- gaia/eval/webapp/node_modules/hasown/CHANGELOG.md +0 -40
- gaia/eval/webapp/node_modules/hasown/LICENSE +0 -21
- gaia/eval/webapp/node_modules/hasown/README.md +0 -40
- gaia/eval/webapp/node_modules/hasown/index.d.ts +0 -3
- gaia/eval/webapp/node_modules/hasown/index.js +0 -8
- gaia/eval/webapp/node_modules/hasown/package.json +0 -92
- gaia/eval/webapp/node_modules/hasown/tsconfig.json +0 -6
- gaia/eval/webapp/node_modules/http-errors/HISTORY.md +0 -180
- gaia/eval/webapp/node_modules/http-errors/LICENSE +0 -23
- gaia/eval/webapp/node_modules/http-errors/README.md +0 -169
- gaia/eval/webapp/node_modules/http-errors/index.js +0 -289
- gaia/eval/webapp/node_modules/http-errors/package.json +0 -50
- gaia/eval/webapp/node_modules/iconv-lite/Changelog.md +0 -162
- gaia/eval/webapp/node_modules/iconv-lite/LICENSE +0 -21
- gaia/eval/webapp/node_modules/iconv-lite/README.md +0 -156
- gaia/eval/webapp/node_modules/iconv-lite/encodings/dbcs-codec.js +0 -555
- gaia/eval/webapp/node_modules/iconv-lite/encodings/dbcs-data.js +0 -176
- gaia/eval/webapp/node_modules/iconv-lite/encodings/index.js +0 -22
- gaia/eval/webapp/node_modules/iconv-lite/encodings/internal.js +0 -188
- gaia/eval/webapp/node_modules/iconv-lite/encodings/sbcs-codec.js +0 -72
- gaia/eval/webapp/node_modules/iconv-lite/encodings/sbcs-data-generated.js +0 -451
- gaia/eval/webapp/node_modules/iconv-lite/encodings/sbcs-data.js +0 -174
- gaia/eval/webapp/node_modules/iconv-lite/encodings/tables/big5-added.json +0 -122
- gaia/eval/webapp/node_modules/iconv-lite/encodings/tables/cp936.json +0 -264
- gaia/eval/webapp/node_modules/iconv-lite/encodings/tables/cp949.json +0 -273
- gaia/eval/webapp/node_modules/iconv-lite/encodings/tables/cp950.json +0 -177
- gaia/eval/webapp/node_modules/iconv-lite/encodings/tables/eucjp.json +0 -182
- gaia/eval/webapp/node_modules/iconv-lite/encodings/tables/gb18030-ranges.json +0 -1
- gaia/eval/webapp/node_modules/iconv-lite/encodings/tables/gbk-added.json +0 -55
- gaia/eval/webapp/node_modules/iconv-lite/encodings/tables/shiftjis.json +0 -125
- gaia/eval/webapp/node_modules/iconv-lite/encodings/utf16.js +0 -177
- gaia/eval/webapp/node_modules/iconv-lite/encodings/utf7.js +0 -290
- gaia/eval/webapp/node_modules/iconv-lite/lib/bom-handling.js +0 -52
- gaia/eval/webapp/node_modules/iconv-lite/lib/extend-node.js +0 -217
- gaia/eval/webapp/node_modules/iconv-lite/lib/index.d.ts +0 -24
- gaia/eval/webapp/node_modules/iconv-lite/lib/index.js +0 -153
- gaia/eval/webapp/node_modules/iconv-lite/lib/streams.js +0 -121
- gaia/eval/webapp/node_modules/iconv-lite/package.json +0 -46
- gaia/eval/webapp/node_modules/inherits/LICENSE +0 -16
- gaia/eval/webapp/node_modules/inherits/README.md +0 -42
- gaia/eval/webapp/node_modules/inherits/inherits.js +0 -9
- gaia/eval/webapp/node_modules/inherits/inherits_browser.js +0 -27
- gaia/eval/webapp/node_modules/inherits/package.json +0 -29
- gaia/eval/webapp/node_modules/ipaddr.js/LICENSE +0 -19
- gaia/eval/webapp/node_modules/ipaddr.js/README.md +0 -233
- gaia/eval/webapp/node_modules/ipaddr.js/ipaddr.min.js +0 -1
- gaia/eval/webapp/node_modules/ipaddr.js/lib/ipaddr.js +0 -673
- gaia/eval/webapp/node_modules/ipaddr.js/lib/ipaddr.js.d.ts +0 -68
- gaia/eval/webapp/node_modules/ipaddr.js/package.json +0 -35
- gaia/eval/webapp/node_modules/math-intrinsics/.eslintrc +0 -16
- gaia/eval/webapp/node_modules/math-intrinsics/.github/FUNDING.yml +0 -12
- gaia/eval/webapp/node_modules/math-intrinsics/CHANGELOG.md +0 -24
- gaia/eval/webapp/node_modules/math-intrinsics/LICENSE +0 -21
- gaia/eval/webapp/node_modules/math-intrinsics/README.md +0 -50
- gaia/eval/webapp/node_modules/math-intrinsics/abs.d.ts +0 -1
- gaia/eval/webapp/node_modules/math-intrinsics/abs.js +0 -4
- gaia/eval/webapp/node_modules/math-intrinsics/constants/maxArrayLength.d.ts +0 -3
- gaia/eval/webapp/node_modules/math-intrinsics/constants/maxArrayLength.js +0 -4
- gaia/eval/webapp/node_modules/math-intrinsics/constants/maxSafeInteger.d.ts +0 -3
- gaia/eval/webapp/node_modules/math-intrinsics/constants/maxSafeInteger.js +0 -5
- gaia/eval/webapp/node_modules/math-intrinsics/constants/maxValue.d.ts +0 -3
- gaia/eval/webapp/node_modules/math-intrinsics/constants/maxValue.js +0 -5
- gaia/eval/webapp/node_modules/math-intrinsics/floor.d.ts +0 -1
- gaia/eval/webapp/node_modules/math-intrinsics/floor.js +0 -4
- gaia/eval/webapp/node_modules/math-intrinsics/isFinite.d.ts +0 -3
- gaia/eval/webapp/node_modules/math-intrinsics/isFinite.js +0 -12
- gaia/eval/webapp/node_modules/math-intrinsics/isInteger.d.ts +0 -3
- gaia/eval/webapp/node_modules/math-intrinsics/isInteger.js +0 -16
- gaia/eval/webapp/node_modules/math-intrinsics/isNaN.d.ts +0 -1
- gaia/eval/webapp/node_modules/math-intrinsics/isNaN.js +0 -6
- gaia/eval/webapp/node_modules/math-intrinsics/isNegativeZero.d.ts +0 -3
- gaia/eval/webapp/node_modules/math-intrinsics/isNegativeZero.js +0 -6
- gaia/eval/webapp/node_modules/math-intrinsics/max.d.ts +0 -1
- gaia/eval/webapp/node_modules/math-intrinsics/max.js +0 -4
- gaia/eval/webapp/node_modules/math-intrinsics/min.d.ts +0 -1
- gaia/eval/webapp/node_modules/math-intrinsics/min.js +0 -4
- gaia/eval/webapp/node_modules/math-intrinsics/mod.d.ts +0 -3
- gaia/eval/webapp/node_modules/math-intrinsics/mod.js +0 -9
- gaia/eval/webapp/node_modules/math-intrinsics/package.json +0 -86
- gaia/eval/webapp/node_modules/math-intrinsics/pow.d.ts +0 -1
- gaia/eval/webapp/node_modules/math-intrinsics/pow.js +0 -4
- gaia/eval/webapp/node_modules/math-intrinsics/round.d.ts +0 -1
- gaia/eval/webapp/node_modules/math-intrinsics/round.js +0 -4
- gaia/eval/webapp/node_modules/math-intrinsics/sign.d.ts +0 -3
- gaia/eval/webapp/node_modules/math-intrinsics/sign.js +0 -11
- gaia/eval/webapp/node_modules/math-intrinsics/test/index.js +0 -192
- gaia/eval/webapp/node_modules/math-intrinsics/tsconfig.json +0 -3
- gaia/eval/webapp/node_modules/media-typer/HISTORY.md +0 -22
- gaia/eval/webapp/node_modules/media-typer/LICENSE +0 -22
- gaia/eval/webapp/node_modules/media-typer/README.md +0 -81
- gaia/eval/webapp/node_modules/media-typer/index.js +0 -270
- gaia/eval/webapp/node_modules/media-typer/package.json +0 -26
- gaia/eval/webapp/node_modules/merge-descriptors/HISTORY.md +0 -21
- gaia/eval/webapp/node_modules/merge-descriptors/LICENSE +0 -23
- gaia/eval/webapp/node_modules/merge-descriptors/README.md +0 -49
- gaia/eval/webapp/node_modules/merge-descriptors/index.js +0 -60
- gaia/eval/webapp/node_modules/merge-descriptors/package.json +0 -39
- gaia/eval/webapp/node_modules/methods/HISTORY.md +0 -29
- gaia/eval/webapp/node_modules/methods/LICENSE +0 -24
- gaia/eval/webapp/node_modules/methods/README.md +0 -51
- gaia/eval/webapp/node_modules/methods/index.js +0 -69
- gaia/eval/webapp/node_modules/methods/package.json +0 -36
- gaia/eval/webapp/node_modules/mime/.npmignore +0 -0
- gaia/eval/webapp/node_modules/mime/CHANGELOG.md +0 -164
- gaia/eval/webapp/node_modules/mime/LICENSE +0 -21
- gaia/eval/webapp/node_modules/mime/README.md +0 -90
- gaia/eval/webapp/node_modules/mime/cli.js +0 -8
- gaia/eval/webapp/node_modules/mime/mime.js +0 -108
- gaia/eval/webapp/node_modules/mime/package.json +0 -44
- gaia/eval/webapp/node_modules/mime/src/build.js +0 -53
- gaia/eval/webapp/node_modules/mime/src/test.js +0 -60
- gaia/eval/webapp/node_modules/mime/types.json +0 -1
- gaia/eval/webapp/node_modules/mime-db/HISTORY.md +0 -507
- gaia/eval/webapp/node_modules/mime-db/LICENSE +0 -23
- gaia/eval/webapp/node_modules/mime-db/README.md +0 -100
- gaia/eval/webapp/node_modules/mime-db/db.json +0 -8519
- gaia/eval/webapp/node_modules/mime-db/index.js +0 -12
- gaia/eval/webapp/node_modules/mime-db/package.json +0 -60
- gaia/eval/webapp/node_modules/mime-types/HISTORY.md +0 -397
- gaia/eval/webapp/node_modules/mime-types/LICENSE +0 -23
- gaia/eval/webapp/node_modules/mime-types/README.md +0 -113
- gaia/eval/webapp/node_modules/mime-types/index.js +0 -188
- gaia/eval/webapp/node_modules/mime-types/package.json +0 -44
- gaia/eval/webapp/node_modules/ms/index.js +0 -152
- gaia/eval/webapp/node_modules/ms/license.md +0 -21
- gaia/eval/webapp/node_modules/ms/package.json +0 -37
- gaia/eval/webapp/node_modules/ms/readme.md +0 -51
- gaia/eval/webapp/node_modules/negotiator/HISTORY.md +0 -108
- gaia/eval/webapp/node_modules/negotiator/LICENSE +0 -24
- gaia/eval/webapp/node_modules/negotiator/README.md +0 -203
- gaia/eval/webapp/node_modules/negotiator/index.js +0 -82
- gaia/eval/webapp/node_modules/negotiator/lib/charset.js +0 -169
- gaia/eval/webapp/node_modules/negotiator/lib/encoding.js +0 -184
- gaia/eval/webapp/node_modules/negotiator/lib/language.js +0 -179
- gaia/eval/webapp/node_modules/negotiator/lib/mediaType.js +0 -294
- gaia/eval/webapp/node_modules/negotiator/package.json +0 -42
- gaia/eval/webapp/node_modules/object-inspect/.eslintrc +0 -53
- gaia/eval/webapp/node_modules/object-inspect/.github/FUNDING.yml +0 -12
- gaia/eval/webapp/node_modules/object-inspect/.nycrc +0 -13
- gaia/eval/webapp/node_modules/object-inspect/CHANGELOG.md +0 -424
- gaia/eval/webapp/node_modules/object-inspect/LICENSE +0 -21
- gaia/eval/webapp/node_modules/object-inspect/example/all.js +0 -23
- gaia/eval/webapp/node_modules/object-inspect/example/circular.js +0 -6
- gaia/eval/webapp/node_modules/object-inspect/example/fn.js +0 -5
- gaia/eval/webapp/node_modules/object-inspect/example/inspect.js +0 -10
- gaia/eval/webapp/node_modules/object-inspect/index.js +0 -544
- gaia/eval/webapp/node_modules/object-inspect/package-support.json +0 -20
- gaia/eval/webapp/node_modules/object-inspect/package.json +0 -105
- gaia/eval/webapp/node_modules/object-inspect/readme.markdown +0 -84
- gaia/eval/webapp/node_modules/object-inspect/test/bigint.js +0 -58
- gaia/eval/webapp/node_modules/object-inspect/test/browser/dom.js +0 -15
- gaia/eval/webapp/node_modules/object-inspect/test/circular.js +0 -16
- gaia/eval/webapp/node_modules/object-inspect/test/deep.js +0 -12
- gaia/eval/webapp/node_modules/object-inspect/test/element.js +0 -53
- gaia/eval/webapp/node_modules/object-inspect/test/err.js +0 -48
- gaia/eval/webapp/node_modules/object-inspect/test/fakes.js +0 -29
- gaia/eval/webapp/node_modules/object-inspect/test/fn.js +0 -76
- gaia/eval/webapp/node_modules/object-inspect/test/global.js +0 -17
- gaia/eval/webapp/node_modules/object-inspect/test/has.js +0 -15
- gaia/eval/webapp/node_modules/object-inspect/test/holes.js +0 -15
- gaia/eval/webapp/node_modules/object-inspect/test/indent-option.js +0 -271
- gaia/eval/webapp/node_modules/object-inspect/test/inspect.js +0 -139
- gaia/eval/webapp/node_modules/object-inspect/test/lowbyte.js +0 -12
- gaia/eval/webapp/node_modules/object-inspect/test/number.js +0 -58
- gaia/eval/webapp/node_modules/object-inspect/test/quoteStyle.js +0 -26
- gaia/eval/webapp/node_modules/object-inspect/test/toStringTag.js +0 -40
- gaia/eval/webapp/node_modules/object-inspect/test/undef.js +0 -12
- gaia/eval/webapp/node_modules/object-inspect/test/values.js +0 -261
- gaia/eval/webapp/node_modules/object-inspect/test-core-js.js +0 -26
- gaia/eval/webapp/node_modules/object-inspect/util.inspect.js +0 -1
- gaia/eval/webapp/node_modules/on-finished/HISTORY.md +0 -98
- gaia/eval/webapp/node_modules/on-finished/LICENSE +0 -23
- gaia/eval/webapp/node_modules/on-finished/README.md +0 -162
- gaia/eval/webapp/node_modules/on-finished/index.js +0 -234
- gaia/eval/webapp/node_modules/on-finished/package.json +0 -39
- gaia/eval/webapp/node_modules/parseurl/HISTORY.md +0 -58
- gaia/eval/webapp/node_modules/parseurl/LICENSE +0 -24
- gaia/eval/webapp/node_modules/parseurl/README.md +0 -133
- gaia/eval/webapp/node_modules/parseurl/index.js +0 -158
- gaia/eval/webapp/node_modules/parseurl/package.json +0 -40
- gaia/eval/webapp/node_modules/path/.npmignore +0 -1
- gaia/eval/webapp/node_modules/path/LICENSE +0 -18
- gaia/eval/webapp/node_modules/path/README.md +0 -15
- gaia/eval/webapp/node_modules/path/package.json +0 -24
- gaia/eval/webapp/node_modules/path/path.js +0 -628
- gaia/eval/webapp/node_modules/path-to-regexp/LICENSE +0 -21
- gaia/eval/webapp/node_modules/path-to-regexp/Readme.md +0 -35
- gaia/eval/webapp/node_modules/path-to-regexp/index.js +0 -156
- gaia/eval/webapp/node_modules/path-to-regexp/package.json +0 -30
- gaia/eval/webapp/node_modules/process/.eslintrc +0 -21
- gaia/eval/webapp/node_modules/process/LICENSE +0 -22
- gaia/eval/webapp/node_modules/process/README.md +0 -26
- gaia/eval/webapp/node_modules/process/browser.js +0 -184
- gaia/eval/webapp/node_modules/process/index.js +0 -2
- gaia/eval/webapp/node_modules/process/package.json +0 -27
- gaia/eval/webapp/node_modules/process/test.js +0 -199
- gaia/eval/webapp/node_modules/proxy-addr/HISTORY.md +0 -161
- gaia/eval/webapp/node_modules/proxy-addr/LICENSE +0 -22
- gaia/eval/webapp/node_modules/proxy-addr/README.md +0 -139
- gaia/eval/webapp/node_modules/proxy-addr/index.js +0 -327
- gaia/eval/webapp/node_modules/proxy-addr/package.json +0 -47
- gaia/eval/webapp/node_modules/qs/.editorconfig +0 -46
- gaia/eval/webapp/node_modules/qs/.eslintrc +0 -38
- gaia/eval/webapp/node_modules/qs/.github/FUNDING.yml +0 -12
- gaia/eval/webapp/node_modules/qs/.nycrc +0 -13
- gaia/eval/webapp/node_modules/qs/CHANGELOG.md +0 -600
- gaia/eval/webapp/node_modules/qs/LICENSE.md +0 -29
- gaia/eval/webapp/node_modules/qs/README.md +0 -709
- gaia/eval/webapp/node_modules/qs/dist/qs.js +0 -90
- gaia/eval/webapp/node_modules/qs/lib/formats.js +0 -23
- gaia/eval/webapp/node_modules/qs/lib/index.js +0 -11
- gaia/eval/webapp/node_modules/qs/lib/parse.js +0 -296
- gaia/eval/webapp/node_modules/qs/lib/stringify.js +0 -351
- gaia/eval/webapp/node_modules/qs/lib/utils.js +0 -265
- gaia/eval/webapp/node_modules/qs/package.json +0 -91
- gaia/eval/webapp/node_modules/qs/test/empty-keys-cases.js +0 -267
- gaia/eval/webapp/node_modules/qs/test/parse.js +0 -1170
- gaia/eval/webapp/node_modules/qs/test/stringify.js +0 -1298
- gaia/eval/webapp/node_modules/qs/test/utils.js +0 -136
- gaia/eval/webapp/node_modules/range-parser/HISTORY.md +0 -56
- gaia/eval/webapp/node_modules/range-parser/LICENSE +0 -23
- gaia/eval/webapp/node_modules/range-parser/README.md +0 -84
- gaia/eval/webapp/node_modules/range-parser/index.js +0 -162
- gaia/eval/webapp/node_modules/range-parser/package.json +0 -44
- gaia/eval/webapp/node_modules/raw-body/HISTORY.md +0 -308
- gaia/eval/webapp/node_modules/raw-body/LICENSE +0 -22
- gaia/eval/webapp/node_modules/raw-body/README.md +0 -223
- gaia/eval/webapp/node_modules/raw-body/SECURITY.md +0 -24
- gaia/eval/webapp/node_modules/raw-body/index.d.ts +0 -87
- gaia/eval/webapp/node_modules/raw-body/index.js +0 -336
- gaia/eval/webapp/node_modules/raw-body/package.json +0 -49
- gaia/eval/webapp/node_modules/safe-buffer/LICENSE +0 -21
- gaia/eval/webapp/node_modules/safe-buffer/README.md +0 -584
- gaia/eval/webapp/node_modules/safe-buffer/index.d.ts +0 -187
- gaia/eval/webapp/node_modules/safe-buffer/index.js +0 -65
- gaia/eval/webapp/node_modules/safe-buffer/package.json +0 -51
- gaia/eval/webapp/node_modules/safer-buffer/LICENSE +0 -21
- gaia/eval/webapp/node_modules/safer-buffer/Porting-Buffer.md +0 -268
- gaia/eval/webapp/node_modules/safer-buffer/Readme.md +0 -156
- gaia/eval/webapp/node_modules/safer-buffer/dangerous.js +0 -58
- gaia/eval/webapp/node_modules/safer-buffer/package.json +0 -34
- gaia/eval/webapp/node_modules/safer-buffer/safer.js +0 -77
- gaia/eval/webapp/node_modules/safer-buffer/tests.js +0 -406
- gaia/eval/webapp/node_modules/send/HISTORY.md +0 -526
- gaia/eval/webapp/node_modules/send/LICENSE +0 -23
- gaia/eval/webapp/node_modules/send/README.md +0 -327
- gaia/eval/webapp/node_modules/send/SECURITY.md +0 -24
- gaia/eval/webapp/node_modules/send/index.js +0 -1142
- gaia/eval/webapp/node_modules/send/node_modules/encodeurl/HISTORY.md +0 -14
- gaia/eval/webapp/node_modules/send/node_modules/encodeurl/LICENSE +0 -22
- gaia/eval/webapp/node_modules/send/node_modules/encodeurl/README.md +0 -128
- gaia/eval/webapp/node_modules/send/node_modules/encodeurl/index.js +0 -60
- gaia/eval/webapp/node_modules/send/node_modules/encodeurl/package.json +0 -40
- gaia/eval/webapp/node_modules/send/node_modules/ms/index.js +0 -162
- gaia/eval/webapp/node_modules/send/node_modules/ms/license.md +0 -21
- gaia/eval/webapp/node_modules/send/node_modules/ms/package.json +0 -38
- gaia/eval/webapp/node_modules/send/node_modules/ms/readme.md +0 -59
- gaia/eval/webapp/node_modules/send/package.json +0 -62
- gaia/eval/webapp/node_modules/serve-static/HISTORY.md +0 -487
- gaia/eval/webapp/node_modules/serve-static/LICENSE +0 -25
- gaia/eval/webapp/node_modules/serve-static/README.md +0 -257
- gaia/eval/webapp/node_modules/serve-static/index.js +0 -209
- gaia/eval/webapp/node_modules/serve-static/package.json +0 -42
- gaia/eval/webapp/node_modules/setprototypeof/LICENSE +0 -13
- gaia/eval/webapp/node_modules/setprototypeof/README.md +0 -31
- gaia/eval/webapp/node_modules/setprototypeof/index.d.ts +0 -2
- gaia/eval/webapp/node_modules/setprototypeof/index.js +0 -17
- gaia/eval/webapp/node_modules/setprototypeof/package.json +0 -38
- gaia/eval/webapp/node_modules/setprototypeof/test/index.js +0 -24
- gaia/eval/webapp/node_modules/side-channel/.editorconfig +0 -9
- gaia/eval/webapp/node_modules/side-channel/.eslintrc +0 -12
- gaia/eval/webapp/node_modules/side-channel/.github/FUNDING.yml +0 -12
- gaia/eval/webapp/node_modules/side-channel/.nycrc +0 -13
- gaia/eval/webapp/node_modules/side-channel/CHANGELOG.md +0 -110
- gaia/eval/webapp/node_modules/side-channel/LICENSE +0 -21
- gaia/eval/webapp/node_modules/side-channel/README.md +0 -61
- gaia/eval/webapp/node_modules/side-channel/index.d.ts +0 -14
- gaia/eval/webapp/node_modules/side-channel/index.js +0 -43
- gaia/eval/webapp/node_modules/side-channel/package.json +0 -85
- gaia/eval/webapp/node_modules/side-channel/test/index.js +0 -104
- gaia/eval/webapp/node_modules/side-channel/tsconfig.json +0 -9
- gaia/eval/webapp/node_modules/side-channel-list/.editorconfig +0 -9
- gaia/eval/webapp/node_modules/side-channel-list/.eslintrc +0 -11
- gaia/eval/webapp/node_modules/side-channel-list/.github/FUNDING.yml +0 -12
- gaia/eval/webapp/node_modules/side-channel-list/.nycrc +0 -13
- gaia/eval/webapp/node_modules/side-channel-list/CHANGELOG.md +0 -15
- gaia/eval/webapp/node_modules/side-channel-list/LICENSE +0 -21
- gaia/eval/webapp/node_modules/side-channel-list/README.md +0 -62
- gaia/eval/webapp/node_modules/side-channel-list/index.d.ts +0 -13
- gaia/eval/webapp/node_modules/side-channel-list/index.js +0 -113
- gaia/eval/webapp/node_modules/side-channel-list/list.d.ts +0 -14
- gaia/eval/webapp/node_modules/side-channel-list/package.json +0 -77
- gaia/eval/webapp/node_modules/side-channel-list/test/index.js +0 -104
- gaia/eval/webapp/node_modules/side-channel-list/tsconfig.json +0 -9
- gaia/eval/webapp/node_modules/side-channel-map/.editorconfig +0 -9
- gaia/eval/webapp/node_modules/side-channel-map/.eslintrc +0 -11
- gaia/eval/webapp/node_modules/side-channel-map/.github/FUNDING.yml +0 -12
- gaia/eval/webapp/node_modules/side-channel-map/.nycrc +0 -13
- gaia/eval/webapp/node_modules/side-channel-map/CHANGELOG.md +0 -22
- gaia/eval/webapp/node_modules/side-channel-map/LICENSE +0 -21
- gaia/eval/webapp/node_modules/side-channel-map/README.md +0 -62
- gaia/eval/webapp/node_modules/side-channel-map/index.d.ts +0 -15
- gaia/eval/webapp/node_modules/side-channel-map/index.js +0 -68
- gaia/eval/webapp/node_modules/side-channel-map/package.json +0 -80
- gaia/eval/webapp/node_modules/side-channel-map/test/index.js +0 -114
- gaia/eval/webapp/node_modules/side-channel-map/tsconfig.json +0 -9
- gaia/eval/webapp/node_modules/side-channel-weakmap/.editorconfig +0 -9
- gaia/eval/webapp/node_modules/side-channel-weakmap/.eslintrc +0 -12
- gaia/eval/webapp/node_modules/side-channel-weakmap/.github/FUNDING.yml +0 -12
- gaia/eval/webapp/node_modules/side-channel-weakmap/.nycrc +0 -13
- gaia/eval/webapp/node_modules/side-channel-weakmap/CHANGELOG.md +0 -28
- gaia/eval/webapp/node_modules/side-channel-weakmap/LICENSE +0 -21
- gaia/eval/webapp/node_modules/side-channel-weakmap/README.md +0 -62
- gaia/eval/webapp/node_modules/side-channel-weakmap/index.d.ts +0 -15
- gaia/eval/webapp/node_modules/side-channel-weakmap/index.js +0 -84
- gaia/eval/webapp/node_modules/side-channel-weakmap/package.json +0 -87
- gaia/eval/webapp/node_modules/side-channel-weakmap/test/index.js +0 -114
- gaia/eval/webapp/node_modules/side-channel-weakmap/tsconfig.json +0 -9
- gaia/eval/webapp/node_modules/statuses/HISTORY.md +0 -82
- gaia/eval/webapp/node_modules/statuses/LICENSE +0 -23
- gaia/eval/webapp/node_modules/statuses/README.md +0 -136
- gaia/eval/webapp/node_modules/statuses/codes.json +0 -65
- gaia/eval/webapp/node_modules/statuses/index.js +0 -146
- gaia/eval/webapp/node_modules/statuses/package.json +0 -49
- gaia/eval/webapp/node_modules/toidentifier/HISTORY.md +0 -9
- gaia/eval/webapp/node_modules/toidentifier/LICENSE +0 -21
- gaia/eval/webapp/node_modules/toidentifier/README.md +0 -61
- gaia/eval/webapp/node_modules/toidentifier/index.js +0 -32
- gaia/eval/webapp/node_modules/toidentifier/package.json +0 -38
- gaia/eval/webapp/node_modules/type-is/HISTORY.md +0 -259
- gaia/eval/webapp/node_modules/type-is/LICENSE +0 -23
- gaia/eval/webapp/node_modules/type-is/README.md +0 -170
- gaia/eval/webapp/node_modules/type-is/index.js +0 -266
- gaia/eval/webapp/node_modules/type-is/package.json +0 -45
- gaia/eval/webapp/node_modules/unpipe/HISTORY.md +0 -4
- gaia/eval/webapp/node_modules/unpipe/LICENSE +0 -22
- gaia/eval/webapp/node_modules/unpipe/README.md +0 -43
- gaia/eval/webapp/node_modules/unpipe/index.js +0 -69
- gaia/eval/webapp/node_modules/unpipe/package.json +0 -27
- gaia/eval/webapp/node_modules/util/LICENSE +0 -18
- gaia/eval/webapp/node_modules/util/README.md +0 -15
- gaia/eval/webapp/node_modules/util/node_modules/inherits/LICENSE +0 -16
- gaia/eval/webapp/node_modules/util/node_modules/inherits/README.md +0 -42
- gaia/eval/webapp/node_modules/util/node_modules/inherits/inherits.js +0 -7
- gaia/eval/webapp/node_modules/util/node_modules/inherits/inherits_browser.js +0 -23
- gaia/eval/webapp/node_modules/util/node_modules/inherits/package.json +0 -29
- gaia/eval/webapp/node_modules/util/package.json +0 -35
- gaia/eval/webapp/node_modules/util/support/isBuffer.js +0 -3
- gaia/eval/webapp/node_modules/util/support/isBufferBrowser.js +0 -6
- gaia/eval/webapp/node_modules/util/util.js +0 -586
- gaia/eval/webapp/node_modules/utils-merge/.npmignore +0 -9
- gaia/eval/webapp/node_modules/utils-merge/LICENSE +0 -20
- gaia/eval/webapp/node_modules/utils-merge/README.md +0 -34
- gaia/eval/webapp/node_modules/utils-merge/index.js +0 -23
- gaia/eval/webapp/node_modules/utils-merge/package.json +0 -40
- gaia/eval/webapp/node_modules/vary/HISTORY.md +0 -39
- gaia/eval/webapp/node_modules/vary/LICENSE +0 -22
- gaia/eval/webapp/node_modules/vary/README.md +0 -101
- gaia/eval/webapp/node_modules/vary/index.js +0 -149
- gaia/eval/webapp/node_modules/vary/package.json +0 -43
- {amd_gaia-0.14.1.dist-info → amd_gaia-0.14.3.dist-info}/WHEEL +0 -0
- {amd_gaia-0.14.1.dist-info → amd_gaia-0.14.3.dist-info}/licenses/LICENSE.md +0 -0
- {amd_gaia-0.14.1.dist-info → amd_gaia-0.14.3.dist-info}/top_level.txt +0 -0
gaia/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):
|
gaia/llm/lemonade_manager.py
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# Copyright(C)
|
|
1
|
+
# Copyright(C) 2025-2026 Advanced Micro Devices, Inc. All rights reserved.
|
|
2
2
|
# SPDX-License-Identifier: MIT
|
|
3
3
|
"""
|
|
4
4
|
Lazy Lemonade Server Manager for GAIA.
|
|
@@ -10,6 +10,7 @@ Operates at the LLM level (not agent level) for flexibility with community agent
|
|
|
10
10
|
import os
|
|
11
11
|
import sys
|
|
12
12
|
import threading
|
|
13
|
+
from enum import Enum
|
|
13
14
|
from typing import Optional
|
|
14
15
|
|
|
15
16
|
from gaia.llm.lemonade_client import LemonadeClient
|
|
@@ -20,6 +21,13 @@ DEFAULT_CONTEXT_SIZE = 32768
|
|
|
20
21
|
DEFAULT_LEMONADE_URL = "http://localhost:8000"
|
|
21
22
|
|
|
22
23
|
|
|
24
|
+
class MessageType(Enum):
|
|
25
|
+
"""Message type for context size notifications."""
|
|
26
|
+
|
|
27
|
+
ERROR = "error"
|
|
28
|
+
WARNING = "warning"
|
|
29
|
+
|
|
30
|
+
|
|
23
31
|
class LemonadeManager:
|
|
24
32
|
"""Singleton manager for lazy Lemonade server initialization.
|
|
25
33
|
|
|
@@ -110,17 +118,30 @@ class LemonadeManager:
|
|
|
110
118
|
print("Then try your command again.", file=sys.stderr)
|
|
111
119
|
|
|
112
120
|
@classmethod
|
|
113
|
-
def
|
|
114
|
-
|
|
121
|
+
def print_context_message(
|
|
122
|
+
cls,
|
|
123
|
+
current_size: int,
|
|
124
|
+
required_size: int,
|
|
125
|
+
message_type: MessageType = MessageType.ERROR,
|
|
126
|
+
):
|
|
127
|
+
"""Print message when context size is insufficient.
|
|
115
128
|
|
|
116
|
-
Shared by CLI and SDK for consistent
|
|
129
|
+
Shared by CLI and SDK for consistent messages.
|
|
117
130
|
|
|
118
131
|
Args:
|
|
119
132
|
current_size: Current server context size in tokens.
|
|
120
133
|
required_size: Required context size in tokens.
|
|
134
|
+
message_type: MessageType.WARNING for warning, MessageType.ERROR for error.
|
|
121
135
|
"""
|
|
136
|
+
if message_type == MessageType.WARNING:
|
|
137
|
+
symbol = "⚠️ "
|
|
138
|
+
label = "Context size below recommended"
|
|
139
|
+
else:
|
|
140
|
+
symbol = "❌"
|
|
141
|
+
label = "Insufficient context size"
|
|
142
|
+
|
|
122
143
|
print("", file=sys.stderr)
|
|
123
|
-
print("
|
|
144
|
+
print(f"{symbol} {label}.", file=sys.stderr)
|
|
124
145
|
print(
|
|
125
146
|
f" Current: {current_size} tokens, Required: {required_size} tokens",
|
|
126
147
|
file=sys.stderr,
|
|
@@ -182,15 +203,17 @@ class LemonadeManager:
|
|
|
182
203
|
)
|
|
183
204
|
return True
|
|
184
205
|
else:
|
|
185
|
-
# Context size insufficient -
|
|
206
|
+
# Context size insufficient - warn and continue
|
|
186
207
|
cls._log.warning(
|
|
187
208
|
f"Lemonade running with {cls._context_size} tokens, "
|
|
188
209
|
f"but {min_context_size} requested. "
|
|
189
210
|
f"Restart with: lemonade-server serve --ctx-size {min_context_size}"
|
|
190
211
|
)
|
|
191
212
|
if not quiet:
|
|
192
|
-
cls.
|
|
193
|
-
|
|
213
|
+
cls.print_context_message(
|
|
214
|
+
cls._context_size, min_context_size, MessageType.WARNING
|
|
215
|
+
)
|
|
216
|
+
return True
|
|
194
217
|
|
|
195
218
|
cls._log.debug(f"Initializing Lemonade (min context: {min_context_size})")
|
|
196
219
|
|
|
@@ -223,15 +246,17 @@ class LemonadeManager:
|
|
|
223
246
|
f"(context: {cls._context_size} tokens)"
|
|
224
247
|
)
|
|
225
248
|
|
|
226
|
-
# Verify context size -
|
|
249
|
+
# Verify context size - warn if insufficient
|
|
227
250
|
if cls._context_size < min_context_size:
|
|
228
251
|
cls._log.warning(
|
|
229
252
|
f"Context size {cls._context_size} is less than "
|
|
230
253
|
f"requested {min_context_size}. Some features may not work correctly."
|
|
231
254
|
)
|
|
232
255
|
if not quiet:
|
|
233
|
-
cls.
|
|
234
|
-
|
|
256
|
+
cls.print_context_message(
|
|
257
|
+
cls._context_size, min_context_size, MessageType.WARNING
|
|
258
|
+
)
|
|
259
|
+
return True
|
|
235
260
|
|
|
236
261
|
return True
|
|
237
262
|
|
gaia/llm/llm_client.py
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# Copyright(C)
|
|
1
|
+
# Copyright(C) 2025-2026 Advanced Micro Devices, Inc. All rights reserved.
|
|
2
2
|
# SPDX-License-Identifier: MIT
|
|
3
3
|
|
|
4
4
|
# Standard library imports
|
|
@@ -142,7 +142,7 @@ class LLMClient:
|
|
|
142
142
|
logger.debug(f"Using Claude API with model={self.default_model}")
|
|
143
143
|
elif use_claude and not CLAUDE_AVAILABLE:
|
|
144
144
|
raise ValueError(
|
|
145
|
-
"Claude support requested but anthropic library not available. Install with: pip install anthropic"
|
|
145
|
+
"Claude support requested but anthropic library not available. Install with: uv pip install anthropic"
|
|
146
146
|
)
|
|
147
147
|
elif use_openai:
|
|
148
148
|
# Use OpenAI API
|
gaia/llm/vlm_client.py
CHANGED
|
@@ -23,20 +23,54 @@ DEFAULT_LEMONADE_URL = "http://localhost:8000/api/v1"
|
|
|
23
23
|
|
|
24
24
|
logger = logging.getLogger(__name__)
|
|
25
25
|
|
|
26
|
+
# Magic bytes for common image formats
|
|
27
|
+
IMAGE_SIGNATURES = {
|
|
28
|
+
b"\x89PNG\r\n\x1a\n": "image/png",
|
|
29
|
+
b"\xff\xd8\xff": "image/jpeg",
|
|
30
|
+
b"GIF87a": "image/gif",
|
|
31
|
+
b"GIF89a": "image/gif",
|
|
32
|
+
b"RIFF": "image/webp", # WebP starts with RIFF...WEBP
|
|
33
|
+
b"BM": "image/bmp",
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
def detect_image_mime_type(image_bytes: bytes) -> str:
|
|
38
|
+
"""
|
|
39
|
+
Detect MIME type from image bytes using magic number signatures.
|
|
40
|
+
|
|
41
|
+
Args:
|
|
42
|
+
image_bytes: Raw image bytes
|
|
43
|
+
|
|
44
|
+
Returns:
|
|
45
|
+
MIME type string (e.g., "image/jpeg", "image/png")
|
|
46
|
+
Defaults to "image/png" if format not detected.
|
|
47
|
+
"""
|
|
48
|
+
for signature, mime_type in IMAGE_SIGNATURES.items():
|
|
49
|
+
if image_bytes.startswith(signature):
|
|
50
|
+
# Special case: WebP needs additional check for WEBP marker
|
|
51
|
+
if signature == b"RIFF" and len(image_bytes) >= 12:
|
|
52
|
+
if image_bytes[8:12] != b"WEBP":
|
|
53
|
+
continue
|
|
54
|
+
return mime_type
|
|
55
|
+
|
|
56
|
+
# Default to PNG if format not detected
|
|
57
|
+
logger.debug("Could not detect image format, defaulting to image/png")
|
|
58
|
+
return "image/png"
|
|
59
|
+
|
|
26
60
|
|
|
27
61
|
class VLMClient:
|
|
28
62
|
"""
|
|
29
63
|
VLM client for extracting text from images using Lemonade server.
|
|
30
64
|
|
|
31
65
|
Handles:
|
|
32
|
-
- Model loading (
|
|
66
|
+
- Model loading (default: Qwen3-VL-4B-Instruct-GGUF)
|
|
33
67
|
- Image-to-markdown conversion
|
|
34
68
|
- State tracking for VLM processing
|
|
35
69
|
"""
|
|
36
70
|
|
|
37
71
|
def __init__(
|
|
38
72
|
self,
|
|
39
|
-
vlm_model: str = "
|
|
73
|
+
vlm_model: str = "Qwen3-VL-4B-Instruct-GGUF",
|
|
40
74
|
base_url: Optional[str] = None,
|
|
41
75
|
auto_load: bool = True,
|
|
42
76
|
):
|
|
@@ -70,7 +104,7 @@ class VLMClient:
|
|
|
70
104
|
self.auto_load = auto_load
|
|
71
105
|
self.vlm_loaded = False
|
|
72
106
|
|
|
73
|
-
logger.
|
|
107
|
+
logger.debug(f"VLM Client initialized: {self.vlm_model} at {self.server_url}")
|
|
74
108
|
|
|
75
109
|
def check_availability(self) -> bool:
|
|
76
110
|
"""
|
|
@@ -86,7 +120,7 @@ class VLMClient:
|
|
|
86
120
|
]
|
|
87
121
|
|
|
88
122
|
if self.vlm_model in available_models:
|
|
89
|
-
logger.
|
|
123
|
+
logger.debug(f"VLM model available: {self.vlm_model}")
|
|
90
124
|
return True
|
|
91
125
|
else:
|
|
92
126
|
logger.warning(f"❌ VLM model not found: {self.vlm_model}")
|
|
@@ -126,11 +160,11 @@ class VLMClient:
|
|
|
126
160
|
return False
|
|
127
161
|
|
|
128
162
|
try:
|
|
129
|
-
logger.
|
|
163
|
+
logger.debug(f"Loading VLM model: {self.vlm_model}")
|
|
130
164
|
# Load model (auto-download handled by lemonade_client, may take hours)
|
|
131
165
|
self.client.load_model(self.vlm_model, timeout=60, auto_download=True)
|
|
132
166
|
self.vlm_loaded = True
|
|
133
|
-
logger.
|
|
167
|
+
logger.debug(f"VLM model loaded: {self.vlm_model}")
|
|
134
168
|
return True
|
|
135
169
|
|
|
136
170
|
except Exception as e:
|
|
@@ -165,10 +199,10 @@ class VLMClient:
|
|
|
165
199
|
logger.error(error_msg)
|
|
166
200
|
return f"[VLM extraction failed: {error_msg}]"
|
|
167
201
|
|
|
168
|
-
# Encode image as base64
|
|
202
|
+
# Encode image as base64 and detect MIME type
|
|
169
203
|
# Note: Image size optimization happens in pdf_utils.py during extraction
|
|
170
204
|
image_b64 = base64.b64encode(image_bytes).decode("utf-8")
|
|
171
|
-
|
|
205
|
+
mime_type = detect_image_mime_type(image_bytes)
|
|
172
206
|
|
|
173
207
|
# Default prompt for text extraction
|
|
174
208
|
if not prompt:
|
|
@@ -192,7 +226,7 @@ Output format: Clean markdown with the ACTUAL text from the image."""
|
|
|
192
226
|
{"type": "text", "text": prompt},
|
|
193
227
|
{
|
|
194
228
|
"type": "image_url",
|
|
195
|
-
"image_url": {"url": f"data:
|
|
229
|
+
"image_url": {"url": f"data:{mime_type};base64,{image_b64}"},
|
|
196
230
|
},
|
|
197
231
|
],
|
|
198
232
|
}
|
|
@@ -203,11 +237,11 @@ Output format: Clean markdown with the ACTUAL text from the image."""
|
|
|
203
237
|
|
|
204
238
|
start_time = time.time()
|
|
205
239
|
|
|
206
|
-
logger.
|
|
207
|
-
f"
|
|
240
|
+
logger.debug(
|
|
241
|
+
f"VLM extracting from image {image_num} on page {page_num} ({mime_type})..."
|
|
208
242
|
)
|
|
209
243
|
logger.debug(
|
|
210
|
-
f" Image
|
|
244
|
+
f" Image: {mime_type}, {len(image_b64)} chars base64 ({len(image_bytes)} bytes raw)"
|
|
211
245
|
)
|
|
212
246
|
|
|
213
247
|
# Call VLM using chat completions endpoint
|
|
@@ -216,7 +250,7 @@ Output format: Clean markdown with the ACTUAL text from the image."""
|
|
|
216
250
|
messages=messages,
|
|
217
251
|
temperature=0.1, # Low temp for accurate extraction
|
|
218
252
|
max_completion_tokens=2048, # Allow detailed extraction
|
|
219
|
-
timeout=
|
|
253
|
+
timeout=300, # VLM needs more time for complex forms (5 min)
|
|
220
254
|
)
|
|
221
255
|
|
|
222
256
|
elapsed = time.time() - start_time
|
|
@@ -228,14 +262,17 @@ Output format: Clean markdown with the ACTUAL text from the image."""
|
|
|
228
262
|
and len(response["choices"]) > 0
|
|
229
263
|
):
|
|
230
264
|
extracted_text = response["choices"][0]["message"]["content"]
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
f"
|
|
265
|
+
size_kb = len(image_bytes) / 1024
|
|
266
|
+
logger.debug(
|
|
267
|
+
f"Extracted {len(extracted_text)} chars from image {image_num} "
|
|
268
|
+
f"in {elapsed:.2f}s ({size_kb:.0f}KB image)"
|
|
234
269
|
)
|
|
235
270
|
return extracted_text
|
|
236
271
|
else:
|
|
237
|
-
|
|
238
|
-
|
|
272
|
+
# Check for specific error types and provide helpful messages
|
|
273
|
+
error_msg = self._parse_vlm_error(response)
|
|
274
|
+
logger.error(error_msg)
|
|
275
|
+
return f"[VLM extraction failed: {error_msg}]"
|
|
239
276
|
|
|
240
277
|
except Exception as e:
|
|
241
278
|
logger.error(
|
|
@@ -246,6 +283,44 @@ Output format: Clean markdown with the ACTUAL text from the image."""
|
|
|
246
283
|
logger.debug(traceback.format_exc())
|
|
247
284
|
return f"[VLM extraction failed: {str(e)}]"
|
|
248
285
|
|
|
286
|
+
def _parse_vlm_error(self, response: dict) -> str:
|
|
287
|
+
"""Parse VLM error response and return a helpful error message."""
|
|
288
|
+
if not isinstance(response, dict):
|
|
289
|
+
return f"Unexpected response type: {type(response)}"
|
|
290
|
+
|
|
291
|
+
# Check for nested error structure from Lemonade
|
|
292
|
+
error = response.get("error", {})
|
|
293
|
+
if isinstance(error, dict):
|
|
294
|
+
details = error.get("details", {})
|
|
295
|
+
inner_response = (
|
|
296
|
+
details.get("response", {}) if isinstance(details, dict) else {}
|
|
297
|
+
)
|
|
298
|
+
inner_error = (
|
|
299
|
+
inner_response.get("error", {})
|
|
300
|
+
if isinstance(inner_response, dict)
|
|
301
|
+
else {}
|
|
302
|
+
)
|
|
303
|
+
|
|
304
|
+
# Context size error
|
|
305
|
+
if inner_error.get("type") == "exceed_context_size_error":
|
|
306
|
+
n_ctx = inner_error.get("n_ctx", "unknown")
|
|
307
|
+
n_prompt = inner_error.get("n_prompt_tokens", "unknown")
|
|
308
|
+
return (
|
|
309
|
+
f"Context size too small! Image requires {n_prompt} tokens "
|
|
310
|
+
f"but model context is only {n_ctx}. "
|
|
311
|
+
f"To fix: Right-click Lemonade tray icon → Settings → "
|
|
312
|
+
f"set Context Size to 32768, then restart the model."
|
|
313
|
+
)
|
|
314
|
+
|
|
315
|
+
# Other backend errors
|
|
316
|
+
if error.get("type") == "backend_error":
|
|
317
|
+
msg = inner_error.get(
|
|
318
|
+
"message", error.get("message", "Unknown backend error")
|
|
319
|
+
)
|
|
320
|
+
return f"Backend error: {msg}"
|
|
321
|
+
|
|
322
|
+
return f"Unexpected response format: {response}"
|
|
323
|
+
|
|
249
324
|
def extract_from_page_images(self, images: list, page_num: int) -> list:
|
|
250
325
|
"""
|
|
251
326
|
Extract text from multiple images on a page.
|
gaia/logger.py
CHANGED
gaia/mcp/agent_mcp_server.py
CHANGED
gaia/mcp/blender_mcp_client.py
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# Copyright(C)
|
|
1
|
+
# Copyright(C) 2025-2026 Advanced Micro Devices, Inc. All rights reserved.
|
|
2
2
|
# SPDX-License-Identifier: MIT
|
|
3
3
|
|
|
4
4
|
# This Blender MCP client is a simplified and modified version of the BlenderMCP project from https://github.com/BlenderMCP/blender-mcp
|
gaia/mcp/blender_mcp_server.py
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# Copyright(C)
|
|
1
|
+
# Copyright(C) 2025-2026 Advanced Micro Devices, Inc. All rights reserved.
|
|
2
2
|
# SPDX-License-Identifier: MIT
|
|
3
3
|
|
|
4
4
|
# This Blender MCP client is a simplified and modified version of the BlenderMCP project from https://github.com/BlenderMCP/blender-mcp
|
gaia/mcp/context7_cache.py
CHANGED
gaia/mcp/servers/__init__.py
CHANGED
gaia/mcp/servers/docker_mcp.py
CHANGED
gaia/rag/demo.py
CHANGED
|
@@ -85,7 +85,7 @@ def demo_basic_rag():
|
|
|
85
85
|
print(
|
|
86
86
|
"1. Activate environment: source .venv/bin/activate (Linux/macOS) or .\\.venv\\Scripts\\Activate.ps1 (Windows)"
|
|
87
87
|
)
|
|
88
|
-
print(
|
|
88
|
+
print('2. Install RAG dependencies: uv pip install -e ".[rag]"')
|
|
89
89
|
print("3. Either use the test PDF or get your own PDF file")
|
|
90
90
|
print("4. Run: answer = quick_rag('document.pdf', 'What is this about?')")
|
|
91
91
|
|
|
@@ -123,10 +123,10 @@ def demo_basic_rag():
|
|
|
123
123
|
print(" .\\.venv\\Scripts\\Activate.ps1")
|
|
124
124
|
print(" ")
|
|
125
125
|
print(" # Install RAG extras")
|
|
126
|
-
print(
|
|
126
|
+
print(' uv pip install -e ".[rag]"')
|
|
127
127
|
print(" ")
|
|
128
128
|
print(" # Or install dependencies individually:")
|
|
129
|
-
print(" pip install pypdf sentence-transformers faiss-cpu")
|
|
129
|
+
print(" uv pip install pypdf sentence-transformers faiss-cpu")
|
|
130
130
|
|
|
131
131
|
print("\n" + "=" * 60)
|
|
132
132
|
|
|
@@ -215,7 +215,7 @@ def demo_error_handling():
|
|
|
215
215
|
|
|
216
216
|
except ImportError as e:
|
|
217
217
|
print(f"❌ Missing dependencies: {e}")
|
|
218
|
-
print(
|
|
218
|
+
print('Install with: uv pip install -e ".[rag]"')
|
|
219
219
|
|
|
220
220
|
print("-" * 40)
|
|
221
221
|
|
|
@@ -290,7 +290,7 @@ def main():
|
|
|
290
290
|
print("1. Activate virtual environment:")
|
|
291
291
|
print(" Linux/macOS: source .venv/bin/activate")
|
|
292
292
|
print(" Windows: .\\.venv\\Scripts\\Activate.ps1")
|
|
293
|
-
print(
|
|
293
|
+
print('2. Install RAG dependencies: uv pip install -e ".[rag]"')
|
|
294
294
|
print("3. Get a PDF document to test with")
|
|
295
295
|
print("4. Try the CLI commands: gaia rag --help")
|
|
296
296
|
print("5. Use RAG in Python: from gaia.rag.sdk import RAGSDK, quick_rag")
|
gaia/rag/pdf_utils.py
CHANGED
|
@@ -129,7 +129,7 @@ def extract_images_from_page_pymupdf(pdf_path: str, page_num: int) -> List[dict]
|
|
|
129
129
|
doc.close()
|
|
130
130
|
|
|
131
131
|
except ImportError:
|
|
132
|
-
logger.error("PyMuPDF not installed. Install: pip install pymupdf")
|
|
132
|
+
logger.error("PyMuPDF not installed. Install: uv pip install pymupdf")
|
|
133
133
|
except Exception as e:
|
|
134
134
|
logger.error(f"Error extracting images from page {page_num}: {e}")
|
|
135
135
|
|
gaia/rag/sdk.py
CHANGED
|
@@ -175,9 +175,9 @@ class RAGSDK:
|
|
|
175
175
|
error_msg = (
|
|
176
176
|
f"\n❌ Error: Missing required RAG dependencies: {', '.join(missing)}\n\n"
|
|
177
177
|
f"Please install the RAG dependencies:\n"
|
|
178
|
-
f
|
|
178
|
+
f' uv pip install -e ".[rag]"\n\n'
|
|
179
179
|
f"Or install packages directly:\n"
|
|
180
|
-
f" pip install {' '.join(missing)}\n"
|
|
180
|
+
f" uv pip install {' '.join(missing)}\n"
|
|
181
181
|
)
|
|
182
182
|
raise ImportError(error_msg)
|
|
183
183
|
|
gaia/security.py
CHANGED
gaia/talk/sdk.py
CHANGED
|
@@ -360,7 +360,7 @@ class TalkSDK:
|
|
|
360
360
|
return True
|
|
361
361
|
except ImportError:
|
|
362
362
|
self.log.warning(
|
|
363
|
-
'RAG dependencies not available. Install with: pip install -e ".[rag]"'
|
|
363
|
+
'RAG dependencies not available. Install with: uv pip install -e ".[rag]"'
|
|
364
364
|
)
|
|
365
365
|
return False
|
|
366
366
|
except Exception as e:
|