amd-gaia 0.14.1__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- amd_gaia-0.14.1.dist-info/METADATA +768 -0
- amd_gaia-0.14.1.dist-info/RECORD +800 -0
- amd_gaia-0.14.1.dist-info/WHEEL +5 -0
- amd_gaia-0.14.1.dist-info/entry_points.txt +5 -0
- amd_gaia-0.14.1.dist-info/licenses/LICENSE.md +21 -0
- amd_gaia-0.14.1.dist-info/top_level.txt +1 -0
- gaia/__init__.py +2 -0
- gaia/agents/__init__.py +19 -0
- gaia/agents/base/__init__.py +9 -0
- gaia/agents/base/agent.py +2072 -0
- gaia/agents/base/api_agent.py +120 -0
- gaia/agents/base/console.py +1457 -0
- gaia/agents/base/mcp_agent.py +86 -0
- gaia/agents/base/tools.py +83 -0
- gaia/agents/blender/agent.py +556 -0
- gaia/agents/blender/agent_simple.py +135 -0
- gaia/agents/blender/app.py +211 -0
- gaia/agents/blender/app_simple.py +41 -0
- gaia/agents/blender/core/__init__.py +16 -0
- gaia/agents/blender/core/materials.py +506 -0
- gaia/agents/blender/core/objects.py +316 -0
- gaia/agents/blender/core/rendering.py +225 -0
- gaia/agents/blender/core/scene.py +220 -0
- gaia/agents/blender/core/view.py +146 -0
- gaia/agents/chat/__init__.py +9 -0
- gaia/agents/chat/agent.py +975 -0
- gaia/agents/chat/app.py +1058 -0
- gaia/agents/chat/session.py +508 -0
- gaia/agents/chat/tools/__init__.py +15 -0
- gaia/agents/chat/tools/file_tools.py +96 -0
- gaia/agents/chat/tools/rag_tools.py +1729 -0
- gaia/agents/chat/tools/shell_tools.py +436 -0
- gaia/agents/code/__init__.py +7 -0
- gaia/agents/code/agent.py +547 -0
- gaia/agents/code/app.py +266 -0
- gaia/agents/code/models.py +135 -0
- gaia/agents/code/orchestration/__init__.py +24 -0
- gaia/agents/code/orchestration/checklist_executor.py +1739 -0
- gaia/agents/code/orchestration/checklist_generator.py +709 -0
- gaia/agents/code/orchestration/factories/__init__.py +9 -0
- gaia/agents/code/orchestration/factories/base.py +63 -0
- gaia/agents/code/orchestration/factories/nextjs_factory.py +118 -0
- gaia/agents/code/orchestration/factories/python_factory.py +106 -0
- gaia/agents/code/orchestration/orchestrator.py +610 -0
- gaia/agents/code/orchestration/project_analyzer.py +391 -0
- gaia/agents/code/orchestration/steps/__init__.py +67 -0
- gaia/agents/code/orchestration/steps/base.py +188 -0
- gaia/agents/code/orchestration/steps/error_handler.py +314 -0
- gaia/agents/code/orchestration/steps/nextjs.py +828 -0
- gaia/agents/code/orchestration/steps/python.py +307 -0
- gaia/agents/code/orchestration/template_catalog.py +463 -0
- gaia/agents/code/orchestration/workflows/__init__.py +14 -0
- gaia/agents/code/orchestration/workflows/base.py +80 -0
- gaia/agents/code/orchestration/workflows/nextjs.py +186 -0
- gaia/agents/code/orchestration/workflows/python.py +94 -0
- gaia/agents/code/prompts/__init__.py +11 -0
- gaia/agents/code/prompts/base_prompt.py +77 -0
- gaia/agents/code/prompts/code_patterns.py +1925 -0
- gaia/agents/code/prompts/nextjs_prompt.py +40 -0
- gaia/agents/code/prompts/python_prompt.py +109 -0
- gaia/agents/code/schema_inference.py +365 -0
- gaia/agents/code/system_prompt.py +41 -0
- gaia/agents/code/tools/__init__.py +42 -0
- gaia/agents/code/tools/cli_tools.py +1138 -0
- gaia/agents/code/tools/code_formatting.py +319 -0
- gaia/agents/code/tools/code_tools.py +769 -0
- gaia/agents/code/tools/error_fixing.py +1347 -0
- gaia/agents/code/tools/external_tools.py +180 -0
- gaia/agents/code/tools/file_io.py +845 -0
- gaia/agents/code/tools/prisma_tools.py +190 -0
- gaia/agents/code/tools/project_management.py +1016 -0
- gaia/agents/code/tools/testing.py +321 -0
- gaia/agents/code/tools/typescript_tools.py +122 -0
- gaia/agents/code/tools/validation_parsing.py +461 -0
- gaia/agents/code/tools/validation_tools.py +803 -0
- gaia/agents/code/tools/web_dev_tools.py +1744 -0
- gaia/agents/code/validators/__init__.py +16 -0
- gaia/agents/code/validators/antipattern_checker.py +241 -0
- gaia/agents/code/validators/ast_analyzer.py +197 -0
- gaia/agents/code/validators/requirements_validator.py +145 -0
- gaia/agents/code/validators/syntax_validator.py +171 -0
- gaia/agents/docker/__init__.py +7 -0
- gaia/agents/docker/agent.py +642 -0
- gaia/agents/jira/__init__.py +11 -0
- gaia/agents/jira/agent.py +894 -0
- gaia/agents/jira/jql_templates.py +299 -0
- gaia/agents/routing/__init__.py +7 -0
- gaia/agents/routing/agent.py +512 -0
- gaia/agents/routing/system_prompt.py +75 -0
- gaia/api/__init__.py +23 -0
- gaia/api/agent_registry.py +238 -0
- gaia/api/app.py +305 -0
- gaia/api/openai_server.py +575 -0
- gaia/api/schemas.py +186 -0
- gaia/api/sse_handler.py +370 -0
- gaia/apps/__init__.py +4 -0
- gaia/apps/llm/__init__.py +6 -0
- gaia/apps/llm/app.py +169 -0
- gaia/apps/summarize/app.py +633 -0
- gaia/apps/summarize/html_viewer.py +133 -0
- gaia/apps/summarize/pdf_formatter.py +284 -0
- gaia/audio/__init__.py +2 -0
- gaia/audio/audio_client.py +439 -0
- gaia/audio/audio_recorder.py +269 -0
- gaia/audio/kokoro_tts.py +599 -0
- gaia/audio/whisper_asr.py +432 -0
- gaia/chat/__init__.py +16 -0
- gaia/chat/app.py +430 -0
- gaia/chat/prompts.py +522 -0
- gaia/chat/sdk.py +1200 -0
- gaia/cli.py +5621 -0
- gaia/eval/batch_experiment.py +2332 -0
- gaia/eval/claude.py +542 -0
- gaia/eval/config.py +37 -0
- gaia/eval/email_generator.py +512 -0
- gaia/eval/eval.py +3179 -0
- gaia/eval/groundtruth.py +1130 -0
- gaia/eval/transcript_generator.py +582 -0
- gaia/eval/webapp/README.md +168 -0
- gaia/eval/webapp/node_modules/.bin/mime +16 -0
- gaia/eval/webapp/node_modules/.bin/mime.cmd +17 -0
- gaia/eval/webapp/node_modules/.bin/mime.ps1 +28 -0
- gaia/eval/webapp/node_modules/.package-lock.json +865 -0
- gaia/eval/webapp/node_modules/accepts/HISTORY.md +243 -0
- gaia/eval/webapp/node_modules/accepts/LICENSE +23 -0
- gaia/eval/webapp/node_modules/accepts/README.md +140 -0
- gaia/eval/webapp/node_modules/accepts/index.js +238 -0
- gaia/eval/webapp/node_modules/accepts/package.json +47 -0
- gaia/eval/webapp/node_modules/array-flatten/LICENSE +21 -0
- gaia/eval/webapp/node_modules/array-flatten/README.md +43 -0
- gaia/eval/webapp/node_modules/array-flatten/array-flatten.js +64 -0
- gaia/eval/webapp/node_modules/array-flatten/package.json +39 -0
- gaia/eval/webapp/node_modules/body-parser/HISTORY.md +672 -0
- gaia/eval/webapp/node_modules/body-parser/LICENSE +23 -0
- gaia/eval/webapp/node_modules/body-parser/README.md +476 -0
- gaia/eval/webapp/node_modules/body-parser/SECURITY.md +25 -0
- gaia/eval/webapp/node_modules/body-parser/index.js +156 -0
- gaia/eval/webapp/node_modules/body-parser/lib/read.js +205 -0
- gaia/eval/webapp/node_modules/body-parser/lib/types/json.js +247 -0
- gaia/eval/webapp/node_modules/body-parser/lib/types/raw.js +101 -0
- gaia/eval/webapp/node_modules/body-parser/lib/types/text.js +121 -0
- gaia/eval/webapp/node_modules/body-parser/lib/types/urlencoded.js +307 -0
- gaia/eval/webapp/node_modules/body-parser/package.json +56 -0
- gaia/eval/webapp/node_modules/bytes/History.md +97 -0
- gaia/eval/webapp/node_modules/bytes/LICENSE +23 -0
- gaia/eval/webapp/node_modules/bytes/Readme.md +152 -0
- gaia/eval/webapp/node_modules/bytes/index.js +170 -0
- gaia/eval/webapp/node_modules/bytes/package.json +42 -0
- gaia/eval/webapp/node_modules/call-bind-apply-helpers/.eslintrc +17 -0
- gaia/eval/webapp/node_modules/call-bind-apply-helpers/.github/FUNDING.yml +12 -0
- gaia/eval/webapp/node_modules/call-bind-apply-helpers/.nycrc +9 -0
- gaia/eval/webapp/node_modules/call-bind-apply-helpers/CHANGELOG.md +30 -0
- gaia/eval/webapp/node_modules/call-bind-apply-helpers/LICENSE +21 -0
- gaia/eval/webapp/node_modules/call-bind-apply-helpers/README.md +62 -0
- gaia/eval/webapp/node_modules/call-bind-apply-helpers/actualApply.d.ts +1 -0
- gaia/eval/webapp/node_modules/call-bind-apply-helpers/actualApply.js +10 -0
- gaia/eval/webapp/node_modules/call-bind-apply-helpers/applyBind.d.ts +19 -0
- gaia/eval/webapp/node_modules/call-bind-apply-helpers/applyBind.js +10 -0
- gaia/eval/webapp/node_modules/call-bind-apply-helpers/functionApply.d.ts +1 -0
- gaia/eval/webapp/node_modules/call-bind-apply-helpers/functionApply.js +4 -0
- gaia/eval/webapp/node_modules/call-bind-apply-helpers/functionCall.d.ts +1 -0
- gaia/eval/webapp/node_modules/call-bind-apply-helpers/functionCall.js +4 -0
- gaia/eval/webapp/node_modules/call-bind-apply-helpers/index.d.ts +64 -0
- gaia/eval/webapp/node_modules/call-bind-apply-helpers/index.js +15 -0
- gaia/eval/webapp/node_modules/call-bind-apply-helpers/package.json +85 -0
- gaia/eval/webapp/node_modules/call-bind-apply-helpers/reflectApply.d.ts +3 -0
- gaia/eval/webapp/node_modules/call-bind-apply-helpers/reflectApply.js +4 -0
- gaia/eval/webapp/node_modules/call-bind-apply-helpers/test/index.js +63 -0
- gaia/eval/webapp/node_modules/call-bind-apply-helpers/tsconfig.json +9 -0
- gaia/eval/webapp/node_modules/call-bound/.eslintrc +13 -0
- gaia/eval/webapp/node_modules/call-bound/.github/FUNDING.yml +12 -0
- gaia/eval/webapp/node_modules/call-bound/.nycrc +9 -0
- gaia/eval/webapp/node_modules/call-bound/CHANGELOG.md +42 -0
- gaia/eval/webapp/node_modules/call-bound/LICENSE +21 -0
- gaia/eval/webapp/node_modules/call-bound/README.md +53 -0
- gaia/eval/webapp/node_modules/call-bound/index.d.ts +94 -0
- gaia/eval/webapp/node_modules/call-bound/index.js +19 -0
- gaia/eval/webapp/node_modules/call-bound/package.json +99 -0
- gaia/eval/webapp/node_modules/call-bound/test/index.js +61 -0
- gaia/eval/webapp/node_modules/call-bound/tsconfig.json +10 -0
- gaia/eval/webapp/node_modules/content-disposition/HISTORY.md +60 -0
- gaia/eval/webapp/node_modules/content-disposition/LICENSE +22 -0
- gaia/eval/webapp/node_modules/content-disposition/README.md +142 -0
- gaia/eval/webapp/node_modules/content-disposition/index.js +458 -0
- gaia/eval/webapp/node_modules/content-disposition/package.json +44 -0
- gaia/eval/webapp/node_modules/content-type/HISTORY.md +29 -0
- gaia/eval/webapp/node_modules/content-type/LICENSE +22 -0
- gaia/eval/webapp/node_modules/content-type/README.md +94 -0
- gaia/eval/webapp/node_modules/content-type/index.js +225 -0
- gaia/eval/webapp/node_modules/content-type/package.json +42 -0
- gaia/eval/webapp/node_modules/cookie/LICENSE +24 -0
- gaia/eval/webapp/node_modules/cookie/README.md +317 -0
- gaia/eval/webapp/node_modules/cookie/SECURITY.md +25 -0
- gaia/eval/webapp/node_modules/cookie/index.js +334 -0
- gaia/eval/webapp/node_modules/cookie/package.json +44 -0
- gaia/eval/webapp/node_modules/cookie-signature/.npmignore +4 -0
- gaia/eval/webapp/node_modules/cookie-signature/History.md +38 -0
- gaia/eval/webapp/node_modules/cookie-signature/Readme.md +42 -0
- gaia/eval/webapp/node_modules/cookie-signature/index.js +51 -0
- gaia/eval/webapp/node_modules/cookie-signature/package.json +18 -0
- gaia/eval/webapp/node_modules/debug/.coveralls.yml +1 -0
- gaia/eval/webapp/node_modules/debug/.eslintrc +11 -0
- gaia/eval/webapp/node_modules/debug/.npmignore +9 -0
- gaia/eval/webapp/node_modules/debug/.travis.yml +14 -0
- gaia/eval/webapp/node_modules/debug/CHANGELOG.md +362 -0
- gaia/eval/webapp/node_modules/debug/LICENSE +19 -0
- gaia/eval/webapp/node_modules/debug/Makefile +50 -0
- gaia/eval/webapp/node_modules/debug/README.md +312 -0
- gaia/eval/webapp/node_modules/debug/component.json +19 -0
- gaia/eval/webapp/node_modules/debug/karma.conf.js +70 -0
- gaia/eval/webapp/node_modules/debug/node.js +1 -0
- gaia/eval/webapp/node_modules/debug/package.json +49 -0
- gaia/eval/webapp/node_modules/debug/src/browser.js +185 -0
- gaia/eval/webapp/node_modules/debug/src/debug.js +202 -0
- gaia/eval/webapp/node_modules/debug/src/index.js +10 -0
- gaia/eval/webapp/node_modules/debug/src/inspector-log.js +15 -0
- gaia/eval/webapp/node_modules/debug/src/node.js +248 -0
- gaia/eval/webapp/node_modules/depd/History.md +103 -0
- gaia/eval/webapp/node_modules/depd/LICENSE +22 -0
- gaia/eval/webapp/node_modules/depd/Readme.md +280 -0
- gaia/eval/webapp/node_modules/depd/index.js +538 -0
- gaia/eval/webapp/node_modules/depd/lib/browser/index.js +77 -0
- gaia/eval/webapp/node_modules/depd/package.json +45 -0
- gaia/eval/webapp/node_modules/destroy/LICENSE +23 -0
- gaia/eval/webapp/node_modules/destroy/README.md +63 -0
- gaia/eval/webapp/node_modules/destroy/index.js +209 -0
- gaia/eval/webapp/node_modules/destroy/package.json +48 -0
- gaia/eval/webapp/node_modules/dunder-proto/.eslintrc +5 -0
- gaia/eval/webapp/node_modules/dunder-proto/.github/FUNDING.yml +12 -0
- gaia/eval/webapp/node_modules/dunder-proto/.nycrc +13 -0
- gaia/eval/webapp/node_modules/dunder-proto/CHANGELOG.md +24 -0
- gaia/eval/webapp/node_modules/dunder-proto/LICENSE +21 -0
- gaia/eval/webapp/node_modules/dunder-proto/README.md +54 -0
- gaia/eval/webapp/node_modules/dunder-proto/get.d.ts +5 -0
- gaia/eval/webapp/node_modules/dunder-proto/get.js +30 -0
- gaia/eval/webapp/node_modules/dunder-proto/package.json +76 -0
- gaia/eval/webapp/node_modules/dunder-proto/set.d.ts +5 -0
- gaia/eval/webapp/node_modules/dunder-proto/set.js +35 -0
- gaia/eval/webapp/node_modules/dunder-proto/test/get.js +34 -0
- gaia/eval/webapp/node_modules/dunder-proto/test/index.js +4 -0
- gaia/eval/webapp/node_modules/dunder-proto/test/set.js +50 -0
- gaia/eval/webapp/node_modules/dunder-proto/tsconfig.json +9 -0
- gaia/eval/webapp/node_modules/ee-first/LICENSE +22 -0
- gaia/eval/webapp/node_modules/ee-first/README.md +80 -0
- gaia/eval/webapp/node_modules/ee-first/index.js +95 -0
- gaia/eval/webapp/node_modules/ee-first/package.json +29 -0
- gaia/eval/webapp/node_modules/encodeurl/LICENSE +22 -0
- gaia/eval/webapp/node_modules/encodeurl/README.md +109 -0
- gaia/eval/webapp/node_modules/encodeurl/index.js +60 -0
- gaia/eval/webapp/node_modules/encodeurl/package.json +40 -0
- gaia/eval/webapp/node_modules/es-define-property/.eslintrc +13 -0
- gaia/eval/webapp/node_modules/es-define-property/.github/FUNDING.yml +12 -0
- gaia/eval/webapp/node_modules/es-define-property/.nycrc +9 -0
- gaia/eval/webapp/node_modules/es-define-property/CHANGELOG.md +29 -0
- gaia/eval/webapp/node_modules/es-define-property/LICENSE +21 -0
- gaia/eval/webapp/node_modules/es-define-property/README.md +49 -0
- gaia/eval/webapp/node_modules/es-define-property/index.d.ts +3 -0
- gaia/eval/webapp/node_modules/es-define-property/index.js +14 -0
- gaia/eval/webapp/node_modules/es-define-property/package.json +81 -0
- gaia/eval/webapp/node_modules/es-define-property/test/index.js +56 -0
- gaia/eval/webapp/node_modules/es-define-property/tsconfig.json +10 -0
- gaia/eval/webapp/node_modules/es-errors/.eslintrc +5 -0
- gaia/eval/webapp/node_modules/es-errors/.github/FUNDING.yml +12 -0
- gaia/eval/webapp/node_modules/es-errors/CHANGELOG.md +40 -0
- gaia/eval/webapp/node_modules/es-errors/LICENSE +21 -0
- gaia/eval/webapp/node_modules/es-errors/README.md +55 -0
- gaia/eval/webapp/node_modules/es-errors/eval.d.ts +3 -0
- gaia/eval/webapp/node_modules/es-errors/eval.js +4 -0
- gaia/eval/webapp/node_modules/es-errors/index.d.ts +3 -0
- gaia/eval/webapp/node_modules/es-errors/index.js +4 -0
- gaia/eval/webapp/node_modules/es-errors/package.json +80 -0
- gaia/eval/webapp/node_modules/es-errors/range.d.ts +3 -0
- gaia/eval/webapp/node_modules/es-errors/range.js +4 -0
- gaia/eval/webapp/node_modules/es-errors/ref.d.ts +3 -0
- gaia/eval/webapp/node_modules/es-errors/ref.js +4 -0
- gaia/eval/webapp/node_modules/es-errors/syntax.d.ts +3 -0
- gaia/eval/webapp/node_modules/es-errors/syntax.js +4 -0
- gaia/eval/webapp/node_modules/es-errors/test/index.js +19 -0
- gaia/eval/webapp/node_modules/es-errors/tsconfig.json +49 -0
- gaia/eval/webapp/node_modules/es-errors/type.d.ts +3 -0
- gaia/eval/webapp/node_modules/es-errors/type.js +4 -0
- gaia/eval/webapp/node_modules/es-errors/uri.d.ts +3 -0
- gaia/eval/webapp/node_modules/es-errors/uri.js +4 -0
- gaia/eval/webapp/node_modules/es-object-atoms/.eslintrc +16 -0
- gaia/eval/webapp/node_modules/es-object-atoms/.github/FUNDING.yml +12 -0
- gaia/eval/webapp/node_modules/es-object-atoms/CHANGELOG.md +37 -0
- gaia/eval/webapp/node_modules/es-object-atoms/LICENSE +21 -0
- gaia/eval/webapp/node_modules/es-object-atoms/README.md +63 -0
- gaia/eval/webapp/node_modules/es-object-atoms/RequireObjectCoercible.d.ts +3 -0
- gaia/eval/webapp/node_modules/es-object-atoms/RequireObjectCoercible.js +11 -0
- gaia/eval/webapp/node_modules/es-object-atoms/ToObject.d.ts +7 -0
- gaia/eval/webapp/node_modules/es-object-atoms/ToObject.js +10 -0
- gaia/eval/webapp/node_modules/es-object-atoms/index.d.ts +3 -0
- gaia/eval/webapp/node_modules/es-object-atoms/index.js +4 -0
- gaia/eval/webapp/node_modules/es-object-atoms/isObject.d.ts +3 -0
- gaia/eval/webapp/node_modules/es-object-atoms/isObject.js +6 -0
- gaia/eval/webapp/node_modules/es-object-atoms/package.json +80 -0
- gaia/eval/webapp/node_modules/es-object-atoms/test/index.js +38 -0
- gaia/eval/webapp/node_modules/es-object-atoms/tsconfig.json +6 -0
- gaia/eval/webapp/node_modules/escape-html/LICENSE +24 -0
- gaia/eval/webapp/node_modules/escape-html/Readme.md +43 -0
- gaia/eval/webapp/node_modules/escape-html/index.js +78 -0
- gaia/eval/webapp/node_modules/escape-html/package.json +24 -0
- gaia/eval/webapp/node_modules/etag/HISTORY.md +83 -0
- gaia/eval/webapp/node_modules/etag/LICENSE +22 -0
- gaia/eval/webapp/node_modules/etag/README.md +159 -0
- gaia/eval/webapp/node_modules/etag/index.js +131 -0
- gaia/eval/webapp/node_modules/etag/package.json +47 -0
- gaia/eval/webapp/node_modules/express/History.md +3656 -0
- gaia/eval/webapp/node_modules/express/LICENSE +24 -0
- gaia/eval/webapp/node_modules/express/Readme.md +260 -0
- gaia/eval/webapp/node_modules/express/index.js +11 -0
- gaia/eval/webapp/node_modules/express/lib/application.js +661 -0
- gaia/eval/webapp/node_modules/express/lib/express.js +116 -0
- gaia/eval/webapp/node_modules/express/lib/middleware/init.js +43 -0
- gaia/eval/webapp/node_modules/express/lib/middleware/query.js +47 -0
- gaia/eval/webapp/node_modules/express/lib/request.js +525 -0
- gaia/eval/webapp/node_modules/express/lib/response.js +1179 -0
- gaia/eval/webapp/node_modules/express/lib/router/index.js +673 -0
- gaia/eval/webapp/node_modules/express/lib/router/layer.js +181 -0
- gaia/eval/webapp/node_modules/express/lib/router/route.js +230 -0
- gaia/eval/webapp/node_modules/express/lib/utils.js +303 -0
- gaia/eval/webapp/node_modules/express/lib/view.js +182 -0
- gaia/eval/webapp/node_modules/express/package.json +102 -0
- gaia/eval/webapp/node_modules/finalhandler/HISTORY.md +210 -0
- gaia/eval/webapp/node_modules/finalhandler/LICENSE +22 -0
- gaia/eval/webapp/node_modules/finalhandler/README.md +147 -0
- gaia/eval/webapp/node_modules/finalhandler/SECURITY.md +25 -0
- gaia/eval/webapp/node_modules/finalhandler/index.js +341 -0
- gaia/eval/webapp/node_modules/finalhandler/package.json +47 -0
- gaia/eval/webapp/node_modules/forwarded/HISTORY.md +21 -0
- gaia/eval/webapp/node_modules/forwarded/LICENSE +22 -0
- gaia/eval/webapp/node_modules/forwarded/README.md +57 -0
- gaia/eval/webapp/node_modules/forwarded/index.js +90 -0
- gaia/eval/webapp/node_modules/forwarded/package.json +45 -0
- gaia/eval/webapp/node_modules/fresh/HISTORY.md +70 -0
- gaia/eval/webapp/node_modules/fresh/LICENSE +23 -0
- gaia/eval/webapp/node_modules/fresh/README.md +119 -0
- gaia/eval/webapp/node_modules/fresh/index.js +137 -0
- gaia/eval/webapp/node_modules/fresh/package.json +46 -0
- gaia/eval/webapp/node_modules/fs/README.md +9 -0
- gaia/eval/webapp/node_modules/fs/package.json +20 -0
- gaia/eval/webapp/node_modules/function-bind/.eslintrc +21 -0
- gaia/eval/webapp/node_modules/function-bind/.github/FUNDING.yml +12 -0
- gaia/eval/webapp/node_modules/function-bind/.github/SECURITY.md +3 -0
- gaia/eval/webapp/node_modules/function-bind/.nycrc +13 -0
- gaia/eval/webapp/node_modules/function-bind/CHANGELOG.md +136 -0
- gaia/eval/webapp/node_modules/function-bind/LICENSE +20 -0
- gaia/eval/webapp/node_modules/function-bind/README.md +46 -0
- gaia/eval/webapp/node_modules/function-bind/implementation.js +84 -0
- gaia/eval/webapp/node_modules/function-bind/index.js +5 -0
- gaia/eval/webapp/node_modules/function-bind/package.json +87 -0
- gaia/eval/webapp/node_modules/function-bind/test/.eslintrc +9 -0
- gaia/eval/webapp/node_modules/function-bind/test/index.js +252 -0
- gaia/eval/webapp/node_modules/get-intrinsic/.eslintrc +42 -0
- gaia/eval/webapp/node_modules/get-intrinsic/.github/FUNDING.yml +12 -0
- gaia/eval/webapp/node_modules/get-intrinsic/.nycrc +9 -0
- gaia/eval/webapp/node_modules/get-intrinsic/CHANGELOG.md +186 -0
- gaia/eval/webapp/node_modules/get-intrinsic/LICENSE +21 -0
- gaia/eval/webapp/node_modules/get-intrinsic/README.md +71 -0
- gaia/eval/webapp/node_modules/get-intrinsic/index.js +378 -0
- gaia/eval/webapp/node_modules/get-intrinsic/package.json +97 -0
- gaia/eval/webapp/node_modules/get-intrinsic/test/GetIntrinsic.js +274 -0
- gaia/eval/webapp/node_modules/get-proto/.eslintrc +10 -0
- gaia/eval/webapp/node_modules/get-proto/.github/FUNDING.yml +12 -0
- gaia/eval/webapp/node_modules/get-proto/.nycrc +9 -0
- gaia/eval/webapp/node_modules/get-proto/CHANGELOG.md +21 -0
- gaia/eval/webapp/node_modules/get-proto/LICENSE +21 -0
- gaia/eval/webapp/node_modules/get-proto/Object.getPrototypeOf.d.ts +5 -0
- gaia/eval/webapp/node_modules/get-proto/Object.getPrototypeOf.js +6 -0
- gaia/eval/webapp/node_modules/get-proto/README.md +50 -0
- gaia/eval/webapp/node_modules/get-proto/Reflect.getPrototypeOf.d.ts +3 -0
- gaia/eval/webapp/node_modules/get-proto/Reflect.getPrototypeOf.js +4 -0
- gaia/eval/webapp/node_modules/get-proto/index.d.ts +5 -0
- gaia/eval/webapp/node_modules/get-proto/index.js +27 -0
- gaia/eval/webapp/node_modules/get-proto/package.json +81 -0
- gaia/eval/webapp/node_modules/get-proto/test/index.js +68 -0
- gaia/eval/webapp/node_modules/get-proto/tsconfig.json +9 -0
- gaia/eval/webapp/node_modules/gopd/.eslintrc +16 -0
- gaia/eval/webapp/node_modules/gopd/.github/FUNDING.yml +12 -0
- gaia/eval/webapp/node_modules/gopd/CHANGELOG.md +45 -0
- gaia/eval/webapp/node_modules/gopd/LICENSE +21 -0
- gaia/eval/webapp/node_modules/gopd/README.md +40 -0
- gaia/eval/webapp/node_modules/gopd/gOPD.d.ts +1 -0
- gaia/eval/webapp/node_modules/gopd/gOPD.js +4 -0
- gaia/eval/webapp/node_modules/gopd/index.d.ts +5 -0
- gaia/eval/webapp/node_modules/gopd/index.js +15 -0
- gaia/eval/webapp/node_modules/gopd/package.json +77 -0
- gaia/eval/webapp/node_modules/gopd/test/index.js +36 -0
- gaia/eval/webapp/node_modules/gopd/tsconfig.json +9 -0
- gaia/eval/webapp/node_modules/has-symbols/.eslintrc +11 -0
- gaia/eval/webapp/node_modules/has-symbols/.github/FUNDING.yml +12 -0
- gaia/eval/webapp/node_modules/has-symbols/.nycrc +9 -0
- gaia/eval/webapp/node_modules/has-symbols/CHANGELOG.md +91 -0
- gaia/eval/webapp/node_modules/has-symbols/LICENSE +21 -0
- gaia/eval/webapp/node_modules/has-symbols/README.md +46 -0
- gaia/eval/webapp/node_modules/has-symbols/index.d.ts +3 -0
- gaia/eval/webapp/node_modules/has-symbols/index.js +14 -0
- gaia/eval/webapp/node_modules/has-symbols/package.json +111 -0
- gaia/eval/webapp/node_modules/has-symbols/shams.d.ts +3 -0
- gaia/eval/webapp/node_modules/has-symbols/shams.js +45 -0
- gaia/eval/webapp/node_modules/has-symbols/test/index.js +22 -0
- gaia/eval/webapp/node_modules/has-symbols/test/shams/core-js.js +29 -0
- gaia/eval/webapp/node_modules/has-symbols/test/shams/get-own-property-symbols.js +29 -0
- gaia/eval/webapp/node_modules/has-symbols/test/tests.js +58 -0
- gaia/eval/webapp/node_modules/has-symbols/tsconfig.json +10 -0
- gaia/eval/webapp/node_modules/hasown/.eslintrc +5 -0
- gaia/eval/webapp/node_modules/hasown/.github/FUNDING.yml +12 -0
- gaia/eval/webapp/node_modules/hasown/.nycrc +13 -0
- gaia/eval/webapp/node_modules/hasown/CHANGELOG.md +40 -0
- gaia/eval/webapp/node_modules/hasown/LICENSE +21 -0
- gaia/eval/webapp/node_modules/hasown/README.md +40 -0
- gaia/eval/webapp/node_modules/hasown/index.d.ts +3 -0
- gaia/eval/webapp/node_modules/hasown/index.js +8 -0
- gaia/eval/webapp/node_modules/hasown/package.json +92 -0
- gaia/eval/webapp/node_modules/hasown/tsconfig.json +6 -0
- gaia/eval/webapp/node_modules/http-errors/HISTORY.md +180 -0
- gaia/eval/webapp/node_modules/http-errors/LICENSE +23 -0
- gaia/eval/webapp/node_modules/http-errors/README.md +169 -0
- gaia/eval/webapp/node_modules/http-errors/index.js +289 -0
- gaia/eval/webapp/node_modules/http-errors/package.json +50 -0
- gaia/eval/webapp/node_modules/iconv-lite/Changelog.md +162 -0
- gaia/eval/webapp/node_modules/iconv-lite/LICENSE +21 -0
- gaia/eval/webapp/node_modules/iconv-lite/README.md +156 -0
- gaia/eval/webapp/node_modules/iconv-lite/encodings/dbcs-codec.js +555 -0
- gaia/eval/webapp/node_modules/iconv-lite/encodings/dbcs-data.js +176 -0
- gaia/eval/webapp/node_modules/iconv-lite/encodings/index.js +22 -0
- gaia/eval/webapp/node_modules/iconv-lite/encodings/internal.js +188 -0
- gaia/eval/webapp/node_modules/iconv-lite/encodings/sbcs-codec.js +72 -0
- gaia/eval/webapp/node_modules/iconv-lite/encodings/sbcs-data-generated.js +451 -0
- gaia/eval/webapp/node_modules/iconv-lite/encodings/sbcs-data.js +174 -0
- gaia/eval/webapp/node_modules/iconv-lite/encodings/tables/big5-added.json +122 -0
- gaia/eval/webapp/node_modules/iconv-lite/encodings/tables/cp936.json +264 -0
- gaia/eval/webapp/node_modules/iconv-lite/encodings/tables/cp949.json +273 -0
- gaia/eval/webapp/node_modules/iconv-lite/encodings/tables/cp950.json +177 -0
- gaia/eval/webapp/node_modules/iconv-lite/encodings/tables/eucjp.json +182 -0
- gaia/eval/webapp/node_modules/iconv-lite/encodings/tables/gb18030-ranges.json +1 -0
- gaia/eval/webapp/node_modules/iconv-lite/encodings/tables/gbk-added.json +55 -0
- gaia/eval/webapp/node_modules/iconv-lite/encodings/tables/shiftjis.json +125 -0
- gaia/eval/webapp/node_modules/iconv-lite/encodings/utf16.js +177 -0
- gaia/eval/webapp/node_modules/iconv-lite/encodings/utf7.js +290 -0
- gaia/eval/webapp/node_modules/iconv-lite/lib/bom-handling.js +52 -0
- gaia/eval/webapp/node_modules/iconv-lite/lib/extend-node.js +217 -0
- gaia/eval/webapp/node_modules/iconv-lite/lib/index.d.ts +24 -0
- gaia/eval/webapp/node_modules/iconv-lite/lib/index.js +153 -0
- gaia/eval/webapp/node_modules/iconv-lite/lib/streams.js +121 -0
- gaia/eval/webapp/node_modules/iconv-lite/package.json +46 -0
- gaia/eval/webapp/node_modules/inherits/LICENSE +16 -0
- gaia/eval/webapp/node_modules/inherits/README.md +42 -0
- gaia/eval/webapp/node_modules/inherits/inherits.js +9 -0
- gaia/eval/webapp/node_modules/inherits/inherits_browser.js +27 -0
- gaia/eval/webapp/node_modules/inherits/package.json +29 -0
- gaia/eval/webapp/node_modules/ipaddr.js/LICENSE +19 -0
- gaia/eval/webapp/node_modules/ipaddr.js/README.md +233 -0
- gaia/eval/webapp/node_modules/ipaddr.js/ipaddr.min.js +1 -0
- gaia/eval/webapp/node_modules/ipaddr.js/lib/ipaddr.js +673 -0
- gaia/eval/webapp/node_modules/ipaddr.js/lib/ipaddr.js.d.ts +68 -0
- gaia/eval/webapp/node_modules/ipaddr.js/package.json +35 -0
- gaia/eval/webapp/node_modules/math-intrinsics/.eslintrc +16 -0
- gaia/eval/webapp/node_modules/math-intrinsics/.github/FUNDING.yml +12 -0
- gaia/eval/webapp/node_modules/math-intrinsics/CHANGELOG.md +24 -0
- gaia/eval/webapp/node_modules/math-intrinsics/LICENSE +21 -0
- gaia/eval/webapp/node_modules/math-intrinsics/README.md +50 -0
- gaia/eval/webapp/node_modules/math-intrinsics/abs.d.ts +1 -0
- gaia/eval/webapp/node_modules/math-intrinsics/abs.js +4 -0
- gaia/eval/webapp/node_modules/math-intrinsics/constants/maxArrayLength.d.ts +3 -0
- gaia/eval/webapp/node_modules/math-intrinsics/constants/maxArrayLength.js +4 -0
- gaia/eval/webapp/node_modules/math-intrinsics/constants/maxSafeInteger.d.ts +3 -0
- gaia/eval/webapp/node_modules/math-intrinsics/constants/maxSafeInteger.js +5 -0
- gaia/eval/webapp/node_modules/math-intrinsics/constants/maxValue.d.ts +3 -0
- gaia/eval/webapp/node_modules/math-intrinsics/constants/maxValue.js +5 -0
- gaia/eval/webapp/node_modules/math-intrinsics/floor.d.ts +1 -0
- gaia/eval/webapp/node_modules/math-intrinsics/floor.js +4 -0
- gaia/eval/webapp/node_modules/math-intrinsics/isFinite.d.ts +3 -0
- gaia/eval/webapp/node_modules/math-intrinsics/isFinite.js +12 -0
- gaia/eval/webapp/node_modules/math-intrinsics/isInteger.d.ts +3 -0
- gaia/eval/webapp/node_modules/math-intrinsics/isInteger.js +16 -0
- gaia/eval/webapp/node_modules/math-intrinsics/isNaN.d.ts +1 -0
- gaia/eval/webapp/node_modules/math-intrinsics/isNaN.js +6 -0
- gaia/eval/webapp/node_modules/math-intrinsics/isNegativeZero.d.ts +3 -0
- gaia/eval/webapp/node_modules/math-intrinsics/isNegativeZero.js +6 -0
- gaia/eval/webapp/node_modules/math-intrinsics/max.d.ts +1 -0
- gaia/eval/webapp/node_modules/math-intrinsics/max.js +4 -0
- gaia/eval/webapp/node_modules/math-intrinsics/min.d.ts +1 -0
- gaia/eval/webapp/node_modules/math-intrinsics/min.js +4 -0
- gaia/eval/webapp/node_modules/math-intrinsics/mod.d.ts +3 -0
- gaia/eval/webapp/node_modules/math-intrinsics/mod.js +9 -0
- gaia/eval/webapp/node_modules/math-intrinsics/package.json +86 -0
- gaia/eval/webapp/node_modules/math-intrinsics/pow.d.ts +1 -0
- gaia/eval/webapp/node_modules/math-intrinsics/pow.js +4 -0
- gaia/eval/webapp/node_modules/math-intrinsics/round.d.ts +1 -0
- gaia/eval/webapp/node_modules/math-intrinsics/round.js +4 -0
- gaia/eval/webapp/node_modules/math-intrinsics/sign.d.ts +3 -0
- gaia/eval/webapp/node_modules/math-intrinsics/sign.js +11 -0
- gaia/eval/webapp/node_modules/math-intrinsics/test/index.js +192 -0
- gaia/eval/webapp/node_modules/math-intrinsics/tsconfig.json +3 -0
- gaia/eval/webapp/node_modules/media-typer/HISTORY.md +22 -0
- gaia/eval/webapp/node_modules/media-typer/LICENSE +22 -0
- gaia/eval/webapp/node_modules/media-typer/README.md +81 -0
- gaia/eval/webapp/node_modules/media-typer/index.js +270 -0
- gaia/eval/webapp/node_modules/media-typer/package.json +26 -0
- gaia/eval/webapp/node_modules/merge-descriptors/HISTORY.md +21 -0
- gaia/eval/webapp/node_modules/merge-descriptors/LICENSE +23 -0
- gaia/eval/webapp/node_modules/merge-descriptors/README.md +49 -0
- gaia/eval/webapp/node_modules/merge-descriptors/index.js +60 -0
- gaia/eval/webapp/node_modules/merge-descriptors/package.json +39 -0
- gaia/eval/webapp/node_modules/methods/HISTORY.md +29 -0
- gaia/eval/webapp/node_modules/methods/LICENSE +24 -0
- gaia/eval/webapp/node_modules/methods/README.md +51 -0
- gaia/eval/webapp/node_modules/methods/index.js +69 -0
- gaia/eval/webapp/node_modules/methods/package.json +36 -0
- gaia/eval/webapp/node_modules/mime/.npmignore +0 -0
- gaia/eval/webapp/node_modules/mime/CHANGELOG.md +164 -0
- gaia/eval/webapp/node_modules/mime/LICENSE +21 -0
- gaia/eval/webapp/node_modules/mime/README.md +90 -0
- gaia/eval/webapp/node_modules/mime/cli.js +8 -0
- gaia/eval/webapp/node_modules/mime/mime.js +108 -0
- gaia/eval/webapp/node_modules/mime/package.json +44 -0
- gaia/eval/webapp/node_modules/mime/src/build.js +53 -0
- gaia/eval/webapp/node_modules/mime/src/test.js +60 -0
- gaia/eval/webapp/node_modules/mime/types.json +1 -0
- gaia/eval/webapp/node_modules/mime-db/HISTORY.md +507 -0
- gaia/eval/webapp/node_modules/mime-db/LICENSE +23 -0
- gaia/eval/webapp/node_modules/mime-db/README.md +100 -0
- gaia/eval/webapp/node_modules/mime-db/db.json +8519 -0
- gaia/eval/webapp/node_modules/mime-db/index.js +12 -0
- gaia/eval/webapp/node_modules/mime-db/package.json +60 -0
- gaia/eval/webapp/node_modules/mime-types/HISTORY.md +397 -0
- gaia/eval/webapp/node_modules/mime-types/LICENSE +23 -0
- gaia/eval/webapp/node_modules/mime-types/README.md +113 -0
- gaia/eval/webapp/node_modules/mime-types/index.js +188 -0
- gaia/eval/webapp/node_modules/mime-types/package.json +44 -0
- gaia/eval/webapp/node_modules/ms/index.js +152 -0
- gaia/eval/webapp/node_modules/ms/license.md +21 -0
- gaia/eval/webapp/node_modules/ms/package.json +37 -0
- gaia/eval/webapp/node_modules/ms/readme.md +51 -0
- gaia/eval/webapp/node_modules/negotiator/HISTORY.md +108 -0
- gaia/eval/webapp/node_modules/negotiator/LICENSE +24 -0
- gaia/eval/webapp/node_modules/negotiator/README.md +203 -0
- gaia/eval/webapp/node_modules/negotiator/index.js +82 -0
- gaia/eval/webapp/node_modules/negotiator/lib/charset.js +169 -0
- gaia/eval/webapp/node_modules/negotiator/lib/encoding.js +184 -0
- gaia/eval/webapp/node_modules/negotiator/lib/language.js +179 -0
- gaia/eval/webapp/node_modules/negotiator/lib/mediaType.js +294 -0
- gaia/eval/webapp/node_modules/negotiator/package.json +42 -0
- gaia/eval/webapp/node_modules/object-inspect/.eslintrc +53 -0
- gaia/eval/webapp/node_modules/object-inspect/.github/FUNDING.yml +12 -0
- gaia/eval/webapp/node_modules/object-inspect/.nycrc +13 -0
- gaia/eval/webapp/node_modules/object-inspect/CHANGELOG.md +424 -0
- gaia/eval/webapp/node_modules/object-inspect/LICENSE +21 -0
- gaia/eval/webapp/node_modules/object-inspect/example/all.js +23 -0
- gaia/eval/webapp/node_modules/object-inspect/example/circular.js +6 -0
- gaia/eval/webapp/node_modules/object-inspect/example/fn.js +5 -0
- gaia/eval/webapp/node_modules/object-inspect/example/inspect.js +10 -0
- gaia/eval/webapp/node_modules/object-inspect/index.js +544 -0
- gaia/eval/webapp/node_modules/object-inspect/package-support.json +20 -0
- gaia/eval/webapp/node_modules/object-inspect/package.json +105 -0
- gaia/eval/webapp/node_modules/object-inspect/readme.markdown +84 -0
- gaia/eval/webapp/node_modules/object-inspect/test/bigint.js +58 -0
- gaia/eval/webapp/node_modules/object-inspect/test/browser/dom.js +15 -0
- gaia/eval/webapp/node_modules/object-inspect/test/circular.js +16 -0
- gaia/eval/webapp/node_modules/object-inspect/test/deep.js +12 -0
- gaia/eval/webapp/node_modules/object-inspect/test/element.js +53 -0
- gaia/eval/webapp/node_modules/object-inspect/test/err.js +48 -0
- gaia/eval/webapp/node_modules/object-inspect/test/fakes.js +29 -0
- gaia/eval/webapp/node_modules/object-inspect/test/fn.js +76 -0
- gaia/eval/webapp/node_modules/object-inspect/test/global.js +17 -0
- gaia/eval/webapp/node_modules/object-inspect/test/has.js +15 -0
- gaia/eval/webapp/node_modules/object-inspect/test/holes.js +15 -0
- gaia/eval/webapp/node_modules/object-inspect/test/indent-option.js +271 -0
- gaia/eval/webapp/node_modules/object-inspect/test/inspect.js +139 -0
- gaia/eval/webapp/node_modules/object-inspect/test/lowbyte.js +12 -0
- gaia/eval/webapp/node_modules/object-inspect/test/number.js +58 -0
- gaia/eval/webapp/node_modules/object-inspect/test/quoteStyle.js +26 -0
- gaia/eval/webapp/node_modules/object-inspect/test/toStringTag.js +40 -0
- gaia/eval/webapp/node_modules/object-inspect/test/undef.js +12 -0
- gaia/eval/webapp/node_modules/object-inspect/test/values.js +261 -0
- gaia/eval/webapp/node_modules/object-inspect/test-core-js.js +26 -0
- gaia/eval/webapp/node_modules/object-inspect/util.inspect.js +1 -0
- gaia/eval/webapp/node_modules/on-finished/HISTORY.md +98 -0
- gaia/eval/webapp/node_modules/on-finished/LICENSE +23 -0
- gaia/eval/webapp/node_modules/on-finished/README.md +162 -0
- gaia/eval/webapp/node_modules/on-finished/index.js +234 -0
- gaia/eval/webapp/node_modules/on-finished/package.json +39 -0
- gaia/eval/webapp/node_modules/parseurl/HISTORY.md +58 -0
- gaia/eval/webapp/node_modules/parseurl/LICENSE +24 -0
- gaia/eval/webapp/node_modules/parseurl/README.md +133 -0
- gaia/eval/webapp/node_modules/parseurl/index.js +158 -0
- gaia/eval/webapp/node_modules/parseurl/package.json +40 -0
- gaia/eval/webapp/node_modules/path/.npmignore +1 -0
- gaia/eval/webapp/node_modules/path/LICENSE +18 -0
- gaia/eval/webapp/node_modules/path/README.md +15 -0
- gaia/eval/webapp/node_modules/path/package.json +24 -0
- gaia/eval/webapp/node_modules/path/path.js +628 -0
- gaia/eval/webapp/node_modules/path-to-regexp/LICENSE +21 -0
- gaia/eval/webapp/node_modules/path-to-regexp/Readme.md +35 -0
- gaia/eval/webapp/node_modules/path-to-regexp/index.js +156 -0
- gaia/eval/webapp/node_modules/path-to-regexp/package.json +30 -0
- gaia/eval/webapp/node_modules/process/.eslintrc +21 -0
- gaia/eval/webapp/node_modules/process/LICENSE +22 -0
- gaia/eval/webapp/node_modules/process/README.md +26 -0
- gaia/eval/webapp/node_modules/process/browser.js +184 -0
- gaia/eval/webapp/node_modules/process/index.js +2 -0
- gaia/eval/webapp/node_modules/process/package.json +27 -0
- gaia/eval/webapp/node_modules/process/test.js +199 -0
- gaia/eval/webapp/node_modules/proxy-addr/HISTORY.md +161 -0
- gaia/eval/webapp/node_modules/proxy-addr/LICENSE +22 -0
- gaia/eval/webapp/node_modules/proxy-addr/README.md +139 -0
- gaia/eval/webapp/node_modules/proxy-addr/index.js +327 -0
- gaia/eval/webapp/node_modules/proxy-addr/package.json +47 -0
- gaia/eval/webapp/node_modules/qs/.editorconfig +46 -0
- gaia/eval/webapp/node_modules/qs/.eslintrc +38 -0
- gaia/eval/webapp/node_modules/qs/.github/FUNDING.yml +12 -0
- gaia/eval/webapp/node_modules/qs/.nycrc +13 -0
- gaia/eval/webapp/node_modules/qs/CHANGELOG.md +600 -0
- gaia/eval/webapp/node_modules/qs/LICENSE.md +29 -0
- gaia/eval/webapp/node_modules/qs/README.md +709 -0
- gaia/eval/webapp/node_modules/qs/dist/qs.js +90 -0
- gaia/eval/webapp/node_modules/qs/lib/formats.js +23 -0
- gaia/eval/webapp/node_modules/qs/lib/index.js +11 -0
- gaia/eval/webapp/node_modules/qs/lib/parse.js +296 -0
- gaia/eval/webapp/node_modules/qs/lib/stringify.js +351 -0
- gaia/eval/webapp/node_modules/qs/lib/utils.js +265 -0
- gaia/eval/webapp/node_modules/qs/package.json +91 -0
- gaia/eval/webapp/node_modules/qs/test/empty-keys-cases.js +267 -0
- gaia/eval/webapp/node_modules/qs/test/parse.js +1170 -0
- gaia/eval/webapp/node_modules/qs/test/stringify.js +1298 -0
- gaia/eval/webapp/node_modules/qs/test/utils.js +136 -0
- gaia/eval/webapp/node_modules/range-parser/HISTORY.md +56 -0
- gaia/eval/webapp/node_modules/range-parser/LICENSE +23 -0
- gaia/eval/webapp/node_modules/range-parser/README.md +84 -0
- gaia/eval/webapp/node_modules/range-parser/index.js +162 -0
- gaia/eval/webapp/node_modules/range-parser/package.json +44 -0
- gaia/eval/webapp/node_modules/raw-body/HISTORY.md +308 -0
- gaia/eval/webapp/node_modules/raw-body/LICENSE +22 -0
- gaia/eval/webapp/node_modules/raw-body/README.md +223 -0
- gaia/eval/webapp/node_modules/raw-body/SECURITY.md +24 -0
- gaia/eval/webapp/node_modules/raw-body/index.d.ts +87 -0
- gaia/eval/webapp/node_modules/raw-body/index.js +336 -0
- gaia/eval/webapp/node_modules/raw-body/package.json +49 -0
- gaia/eval/webapp/node_modules/safe-buffer/LICENSE +21 -0
- gaia/eval/webapp/node_modules/safe-buffer/README.md +584 -0
- gaia/eval/webapp/node_modules/safe-buffer/index.d.ts +187 -0
- gaia/eval/webapp/node_modules/safe-buffer/index.js +65 -0
- gaia/eval/webapp/node_modules/safe-buffer/package.json +51 -0
- gaia/eval/webapp/node_modules/safer-buffer/LICENSE +21 -0
- gaia/eval/webapp/node_modules/safer-buffer/Porting-Buffer.md +268 -0
- gaia/eval/webapp/node_modules/safer-buffer/Readme.md +156 -0
- gaia/eval/webapp/node_modules/safer-buffer/dangerous.js +58 -0
- gaia/eval/webapp/node_modules/safer-buffer/package.json +34 -0
- gaia/eval/webapp/node_modules/safer-buffer/safer.js +77 -0
- gaia/eval/webapp/node_modules/safer-buffer/tests.js +406 -0
- gaia/eval/webapp/node_modules/send/HISTORY.md +526 -0
- gaia/eval/webapp/node_modules/send/LICENSE +23 -0
- gaia/eval/webapp/node_modules/send/README.md +327 -0
- gaia/eval/webapp/node_modules/send/SECURITY.md +24 -0
- gaia/eval/webapp/node_modules/send/index.js +1142 -0
- gaia/eval/webapp/node_modules/send/node_modules/encodeurl/HISTORY.md +14 -0
- gaia/eval/webapp/node_modules/send/node_modules/encodeurl/LICENSE +22 -0
- gaia/eval/webapp/node_modules/send/node_modules/encodeurl/README.md +128 -0
- gaia/eval/webapp/node_modules/send/node_modules/encodeurl/index.js +60 -0
- gaia/eval/webapp/node_modules/send/node_modules/encodeurl/package.json +40 -0
- gaia/eval/webapp/node_modules/send/node_modules/ms/index.js +162 -0
- gaia/eval/webapp/node_modules/send/node_modules/ms/license.md +21 -0
- gaia/eval/webapp/node_modules/send/node_modules/ms/package.json +38 -0
- gaia/eval/webapp/node_modules/send/node_modules/ms/readme.md +59 -0
- gaia/eval/webapp/node_modules/send/package.json +62 -0
- gaia/eval/webapp/node_modules/serve-static/HISTORY.md +487 -0
- gaia/eval/webapp/node_modules/serve-static/LICENSE +25 -0
- gaia/eval/webapp/node_modules/serve-static/README.md +257 -0
- gaia/eval/webapp/node_modules/serve-static/index.js +209 -0
- gaia/eval/webapp/node_modules/serve-static/package.json +42 -0
- gaia/eval/webapp/node_modules/setprototypeof/LICENSE +13 -0
- gaia/eval/webapp/node_modules/setprototypeof/README.md +31 -0
- gaia/eval/webapp/node_modules/setprototypeof/index.d.ts +2 -0
- gaia/eval/webapp/node_modules/setprototypeof/index.js +17 -0
- gaia/eval/webapp/node_modules/setprototypeof/package.json +38 -0
- gaia/eval/webapp/node_modules/setprototypeof/test/index.js +24 -0
- gaia/eval/webapp/node_modules/side-channel/.editorconfig +9 -0
- gaia/eval/webapp/node_modules/side-channel/.eslintrc +12 -0
- gaia/eval/webapp/node_modules/side-channel/.github/FUNDING.yml +12 -0
- gaia/eval/webapp/node_modules/side-channel/.nycrc +13 -0
- gaia/eval/webapp/node_modules/side-channel/CHANGELOG.md +110 -0
- gaia/eval/webapp/node_modules/side-channel/LICENSE +21 -0
- gaia/eval/webapp/node_modules/side-channel/README.md +61 -0
- gaia/eval/webapp/node_modules/side-channel/index.d.ts +14 -0
- gaia/eval/webapp/node_modules/side-channel/index.js +43 -0
- gaia/eval/webapp/node_modules/side-channel/package.json +85 -0
- gaia/eval/webapp/node_modules/side-channel/test/index.js +104 -0
- gaia/eval/webapp/node_modules/side-channel/tsconfig.json +9 -0
- gaia/eval/webapp/node_modules/side-channel-list/.editorconfig +9 -0
- gaia/eval/webapp/node_modules/side-channel-list/.eslintrc +11 -0
- gaia/eval/webapp/node_modules/side-channel-list/.github/FUNDING.yml +12 -0
- gaia/eval/webapp/node_modules/side-channel-list/.nycrc +13 -0
- gaia/eval/webapp/node_modules/side-channel-list/CHANGELOG.md +15 -0
- gaia/eval/webapp/node_modules/side-channel-list/LICENSE +21 -0
- gaia/eval/webapp/node_modules/side-channel-list/README.md +62 -0
- gaia/eval/webapp/node_modules/side-channel-list/index.d.ts +13 -0
- gaia/eval/webapp/node_modules/side-channel-list/index.js +113 -0
- gaia/eval/webapp/node_modules/side-channel-list/list.d.ts +14 -0
- gaia/eval/webapp/node_modules/side-channel-list/package.json +77 -0
- gaia/eval/webapp/node_modules/side-channel-list/test/index.js +104 -0
- gaia/eval/webapp/node_modules/side-channel-list/tsconfig.json +9 -0
- gaia/eval/webapp/node_modules/side-channel-map/.editorconfig +9 -0
- gaia/eval/webapp/node_modules/side-channel-map/.eslintrc +11 -0
- gaia/eval/webapp/node_modules/side-channel-map/.github/FUNDING.yml +12 -0
- gaia/eval/webapp/node_modules/side-channel-map/.nycrc +13 -0
- gaia/eval/webapp/node_modules/side-channel-map/CHANGELOG.md +22 -0
- gaia/eval/webapp/node_modules/side-channel-map/LICENSE +21 -0
- gaia/eval/webapp/node_modules/side-channel-map/README.md +62 -0
- gaia/eval/webapp/node_modules/side-channel-map/index.d.ts +15 -0
- gaia/eval/webapp/node_modules/side-channel-map/index.js +68 -0
- gaia/eval/webapp/node_modules/side-channel-map/package.json +80 -0
- gaia/eval/webapp/node_modules/side-channel-map/test/index.js +114 -0
- gaia/eval/webapp/node_modules/side-channel-map/tsconfig.json +9 -0
- gaia/eval/webapp/node_modules/side-channel-weakmap/.editorconfig +9 -0
- gaia/eval/webapp/node_modules/side-channel-weakmap/.eslintrc +12 -0
- gaia/eval/webapp/node_modules/side-channel-weakmap/.github/FUNDING.yml +12 -0
- gaia/eval/webapp/node_modules/side-channel-weakmap/.nycrc +13 -0
- gaia/eval/webapp/node_modules/side-channel-weakmap/CHANGELOG.md +28 -0
- gaia/eval/webapp/node_modules/side-channel-weakmap/LICENSE +21 -0
- gaia/eval/webapp/node_modules/side-channel-weakmap/README.md +62 -0
- gaia/eval/webapp/node_modules/side-channel-weakmap/index.d.ts +15 -0
- gaia/eval/webapp/node_modules/side-channel-weakmap/index.js +84 -0
- gaia/eval/webapp/node_modules/side-channel-weakmap/package.json +87 -0
- gaia/eval/webapp/node_modules/side-channel-weakmap/test/index.js +114 -0
- gaia/eval/webapp/node_modules/side-channel-weakmap/tsconfig.json +9 -0
- gaia/eval/webapp/node_modules/statuses/HISTORY.md +82 -0
- gaia/eval/webapp/node_modules/statuses/LICENSE +23 -0
- gaia/eval/webapp/node_modules/statuses/README.md +136 -0
- gaia/eval/webapp/node_modules/statuses/codes.json +65 -0
- gaia/eval/webapp/node_modules/statuses/index.js +146 -0
- gaia/eval/webapp/node_modules/statuses/package.json +49 -0
- gaia/eval/webapp/node_modules/toidentifier/HISTORY.md +9 -0
- gaia/eval/webapp/node_modules/toidentifier/LICENSE +21 -0
- gaia/eval/webapp/node_modules/toidentifier/README.md +61 -0
- gaia/eval/webapp/node_modules/toidentifier/index.js +32 -0
- gaia/eval/webapp/node_modules/toidentifier/package.json +38 -0
- gaia/eval/webapp/node_modules/type-is/HISTORY.md +259 -0
- gaia/eval/webapp/node_modules/type-is/LICENSE +23 -0
- gaia/eval/webapp/node_modules/type-is/README.md +170 -0
- gaia/eval/webapp/node_modules/type-is/index.js +266 -0
- gaia/eval/webapp/node_modules/type-is/package.json +45 -0
- gaia/eval/webapp/node_modules/unpipe/HISTORY.md +4 -0
- gaia/eval/webapp/node_modules/unpipe/LICENSE +22 -0
- gaia/eval/webapp/node_modules/unpipe/README.md +43 -0
- gaia/eval/webapp/node_modules/unpipe/index.js +69 -0
- gaia/eval/webapp/node_modules/unpipe/package.json +27 -0
- gaia/eval/webapp/node_modules/util/LICENSE +18 -0
- gaia/eval/webapp/node_modules/util/README.md +15 -0
- gaia/eval/webapp/node_modules/util/node_modules/inherits/LICENSE +16 -0
- gaia/eval/webapp/node_modules/util/node_modules/inherits/README.md +42 -0
- gaia/eval/webapp/node_modules/util/node_modules/inherits/inherits.js +7 -0
- gaia/eval/webapp/node_modules/util/node_modules/inherits/inherits_browser.js +23 -0
- gaia/eval/webapp/node_modules/util/node_modules/inherits/package.json +29 -0
- gaia/eval/webapp/node_modules/util/package.json +35 -0
- gaia/eval/webapp/node_modules/util/support/isBuffer.js +3 -0
- gaia/eval/webapp/node_modules/util/support/isBufferBrowser.js +6 -0
- gaia/eval/webapp/node_modules/util/util.js +586 -0
- gaia/eval/webapp/node_modules/utils-merge/.npmignore +9 -0
- gaia/eval/webapp/node_modules/utils-merge/LICENSE +20 -0
- gaia/eval/webapp/node_modules/utils-merge/README.md +34 -0
- gaia/eval/webapp/node_modules/utils-merge/index.js +23 -0
- gaia/eval/webapp/node_modules/utils-merge/package.json +40 -0
- gaia/eval/webapp/node_modules/vary/HISTORY.md +39 -0
- gaia/eval/webapp/node_modules/vary/LICENSE +22 -0
- gaia/eval/webapp/node_modules/vary/README.md +101 -0
- gaia/eval/webapp/node_modules/vary/index.js +149 -0
- gaia/eval/webapp/node_modules/vary/package.json +43 -0
- gaia/eval/webapp/package-lock.json +875 -0
- gaia/eval/webapp/package.json +21 -0
- gaia/eval/webapp/public/app.js +3403 -0
- gaia/eval/webapp/public/index.html +88 -0
- gaia/eval/webapp/public/styles.css +3661 -0
- gaia/eval/webapp/server.js +416 -0
- gaia/eval/webapp/test-setup.js +73 -0
- gaia/llm/__init__.py +2 -0
- gaia/llm/lemonade_client.py +3083 -0
- gaia/llm/lemonade_manager.py +269 -0
- gaia/llm/llm_client.py +729 -0
- gaia/llm/vlm_client.py +307 -0
- gaia/logger.py +189 -0
- gaia/mcp/agent_mcp_server.py +245 -0
- gaia/mcp/blender_mcp_client.py +138 -0
- gaia/mcp/blender_mcp_server.py +648 -0
- gaia/mcp/context7_cache.py +332 -0
- gaia/mcp/external_services.py +518 -0
- gaia/mcp/mcp_bridge.py +550 -0
- gaia/mcp/servers/__init__.py +6 -0
- gaia/mcp/servers/docker_mcp.py +83 -0
- gaia/rag/__init__.py +10 -0
- gaia/rag/app.py +293 -0
- gaia/rag/demo.py +304 -0
- gaia/rag/pdf_utils.py +235 -0
- gaia/rag/sdk.py +2194 -0
- gaia/security.py +163 -0
- gaia/talk/app.py +289 -0
- gaia/talk/sdk.py +538 -0
- gaia/util.py +46 -0
- gaia/version.py +100 -0
gaia/talk/sdk.py
ADDED
|
@@ -0,0 +1,538 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
# Copyright(C) 2024-2025 Advanced Micro Devices, Inc. All rights reserved.
|
|
3
|
+
# SPDX-License-Identifier: MIT
|
|
4
|
+
|
|
5
|
+
"""
|
|
6
|
+
Gaia Talk SDK - Unified voice and text chat integration
|
|
7
|
+
"""
|
|
8
|
+
|
|
9
|
+
import logging
|
|
10
|
+
from dataclasses import dataclass
|
|
11
|
+
from enum import Enum
|
|
12
|
+
from typing import Any, AsyncGenerator, Callable, Dict, Optional
|
|
13
|
+
|
|
14
|
+
from gaia.audio.audio_client import AudioClient
|
|
15
|
+
from gaia.chat.sdk import ChatConfig, ChatSDK
|
|
16
|
+
from gaia.llm.lemonade_client import DEFAULT_MODEL_NAME
|
|
17
|
+
from gaia.logger import get_logger
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
class TalkMode(Enum):
|
|
21
|
+
"""Talk mode options."""
|
|
22
|
+
|
|
23
|
+
TEXT_ONLY = "text_only"
|
|
24
|
+
VOICE_ONLY = "voice_only"
|
|
25
|
+
VOICE_AND_TEXT = "voice_and_text"
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
@dataclass
|
|
29
|
+
class TalkConfig:
|
|
30
|
+
"""Configuration for TalkSDK."""
|
|
31
|
+
|
|
32
|
+
# Voice-specific settings
|
|
33
|
+
whisper_model_size: str = "base"
|
|
34
|
+
audio_device_index: Optional[int] = None # Use default input device
|
|
35
|
+
silence_threshold: float = 0.5
|
|
36
|
+
enable_tts: bool = True
|
|
37
|
+
mode: TalkMode = TalkMode.VOICE_AND_TEXT
|
|
38
|
+
|
|
39
|
+
# Chat settings (from ChatConfig)
|
|
40
|
+
model: str = DEFAULT_MODEL_NAME
|
|
41
|
+
max_tokens: int = 512
|
|
42
|
+
system_prompt: Optional[str] = None
|
|
43
|
+
max_history_length: int = 4 # Number of conversation pairs to keep
|
|
44
|
+
assistant_name: str = "gaia"
|
|
45
|
+
|
|
46
|
+
# General settings
|
|
47
|
+
use_claude: bool = False # Use Claude API
|
|
48
|
+
use_chatgpt: bool = False # Use ChatGPT/OpenAI API
|
|
49
|
+
show_stats: bool = False
|
|
50
|
+
logging_level: str = "INFO"
|
|
51
|
+
|
|
52
|
+
# RAG settings (optional - for document Q&A)
|
|
53
|
+
rag_documents: Optional[list] = None # PDF documents to index
|
|
54
|
+
|
|
55
|
+
|
|
56
|
+
@dataclass
|
|
57
|
+
class TalkResponse:
|
|
58
|
+
"""Response from talk operations."""
|
|
59
|
+
|
|
60
|
+
text: str
|
|
61
|
+
stats: Optional[Dict[str, Any]] = None
|
|
62
|
+
is_complete: bool = True
|
|
63
|
+
|
|
64
|
+
|
|
65
|
+
class TalkSDK:
|
|
66
|
+
"""
|
|
67
|
+
Gaia Talk SDK - Unified voice and text chat integration.
|
|
68
|
+
|
|
69
|
+
This SDK provides a simple interface for integrating Gaia's voice and text
|
|
70
|
+
chat capabilities into applications.
|
|
71
|
+
|
|
72
|
+
Example usage:
|
|
73
|
+
```python
|
|
74
|
+
from gaia.talk.sdk import TalkSDK, TalkConfig
|
|
75
|
+
|
|
76
|
+
# Create SDK instance
|
|
77
|
+
config = TalkConfig(enable_tts=True, show_stats=True)
|
|
78
|
+
talk = TalkSDK(config)
|
|
79
|
+
|
|
80
|
+
# Text chat
|
|
81
|
+
response = await talk.chat("Hello, how are you?")
|
|
82
|
+
print(response.text)
|
|
83
|
+
|
|
84
|
+
# Streaming chat
|
|
85
|
+
async for chunk in talk.chat_stream("Tell me a story"):
|
|
86
|
+
print(chunk.text, end="", flush=True)
|
|
87
|
+
|
|
88
|
+
# Voice chat with document Q&A
|
|
89
|
+
talk_rag = TalkSDK(TalkConfig(enable_tts=True))
|
|
90
|
+
talk_rag.enable_rag(documents=["manual.pdf", "guide.pdf"])
|
|
91
|
+
await talk_rag.start_voice_session()
|
|
92
|
+
|
|
93
|
+
# Voice chat with callback
|
|
94
|
+
def on_voice_input(text):
|
|
95
|
+
print(f"User said: {text}")
|
|
96
|
+
|
|
97
|
+
await talk.start_voice_session(on_voice_input)
|
|
98
|
+
```
|
|
99
|
+
"""
|
|
100
|
+
|
|
101
|
+
def __init__(self, config: Optional[TalkConfig] = None):
|
|
102
|
+
"""
|
|
103
|
+
Initialize the TalkSDK.
|
|
104
|
+
|
|
105
|
+
Args:
|
|
106
|
+
config: Configuration options. If None, uses defaults.
|
|
107
|
+
"""
|
|
108
|
+
self.config = config or TalkConfig()
|
|
109
|
+
self.log = get_logger(__name__)
|
|
110
|
+
self.log.setLevel(getattr(logging, self.config.logging_level))
|
|
111
|
+
|
|
112
|
+
# Initialize ChatSDK for text generation with conversation history
|
|
113
|
+
chat_config = ChatConfig(
|
|
114
|
+
model=self.config.model,
|
|
115
|
+
max_tokens=self.config.max_tokens,
|
|
116
|
+
system_prompt=self.config.system_prompt,
|
|
117
|
+
max_history_length=self.config.max_history_length,
|
|
118
|
+
assistant_name=self.config.assistant_name,
|
|
119
|
+
show_stats=self.config.show_stats,
|
|
120
|
+
logging_level=self.config.logging_level,
|
|
121
|
+
use_claude=self.config.use_claude,
|
|
122
|
+
use_chatgpt=self.config.use_chatgpt,
|
|
123
|
+
)
|
|
124
|
+
self.chat_sdk = ChatSDK(chat_config)
|
|
125
|
+
|
|
126
|
+
# Initialize AudioClient with configuration (for voice features)
|
|
127
|
+
self.audio_client = AudioClient(
|
|
128
|
+
whisper_model_size=self.config.whisper_model_size,
|
|
129
|
+
audio_device_index=self.config.audio_device_index,
|
|
130
|
+
silence_threshold=self.config.silence_threshold,
|
|
131
|
+
enable_tts=self.config.enable_tts,
|
|
132
|
+
logging_level=self.config.logging_level,
|
|
133
|
+
use_claude=self.config.use_claude,
|
|
134
|
+
use_chatgpt=self.config.use_chatgpt,
|
|
135
|
+
system_prompt=self.config.system_prompt,
|
|
136
|
+
)
|
|
137
|
+
|
|
138
|
+
self.show_stats = self.config.show_stats
|
|
139
|
+
self._voice_session_active = False
|
|
140
|
+
|
|
141
|
+
# Enable RAG if documents are provided
|
|
142
|
+
if self.config.rag_documents:
|
|
143
|
+
self.enable_rag(documents=self.config.rag_documents)
|
|
144
|
+
|
|
145
|
+
self.log.info("TalkSDK initialized with ChatSDK integration")
|
|
146
|
+
|
|
147
|
+
async def chat(self, message: str) -> TalkResponse:
|
|
148
|
+
"""
|
|
149
|
+
Send a text message and get a complete response.
|
|
150
|
+
|
|
151
|
+
Args:
|
|
152
|
+
message: The message to send
|
|
153
|
+
|
|
154
|
+
Returns:
|
|
155
|
+
TalkResponse with the complete response
|
|
156
|
+
"""
|
|
157
|
+
try:
|
|
158
|
+
# Use ChatSDK for text generation (with conversation history)
|
|
159
|
+
chat_response = self.chat_sdk.send(message)
|
|
160
|
+
|
|
161
|
+
stats = None
|
|
162
|
+
if self.show_stats:
|
|
163
|
+
stats = chat_response.stats or self.get_stats()
|
|
164
|
+
|
|
165
|
+
return TalkResponse(text=chat_response.text, stats=stats, is_complete=True)
|
|
166
|
+
|
|
167
|
+
except Exception as e:
|
|
168
|
+
self.log.error(f"Error in chat: {e}")
|
|
169
|
+
raise
|
|
170
|
+
|
|
171
|
+
async def chat_stream(self, message: str) -> AsyncGenerator[TalkResponse, None]:
|
|
172
|
+
"""
|
|
173
|
+
Send a text message and get a streaming response.
|
|
174
|
+
|
|
175
|
+
Args:
|
|
176
|
+
message: The message to send
|
|
177
|
+
|
|
178
|
+
Yields:
|
|
179
|
+
TalkResponse chunks as they arrive
|
|
180
|
+
"""
|
|
181
|
+
try:
|
|
182
|
+
# Use ChatSDK for streaming text generation (with conversation history)
|
|
183
|
+
for chat_chunk in self.chat_sdk.send_stream(message):
|
|
184
|
+
if not chat_chunk.is_complete:
|
|
185
|
+
yield TalkResponse(text=chat_chunk.text, is_complete=False)
|
|
186
|
+
else:
|
|
187
|
+
# Final chunk with stats
|
|
188
|
+
stats = chat_chunk.stats if self.show_stats else None
|
|
189
|
+
yield TalkResponse(text="", stats=stats, is_complete=True)
|
|
190
|
+
|
|
191
|
+
except Exception as e:
|
|
192
|
+
self.log.error(f"Error in chat_stream: {e}")
|
|
193
|
+
raise
|
|
194
|
+
|
|
195
|
+
async def process_voice_input(self, text: str) -> TalkResponse:
|
|
196
|
+
"""
|
|
197
|
+
Process voice input text through the complete voice pipeline.
|
|
198
|
+
|
|
199
|
+
This includes TTS output if enabled.
|
|
200
|
+
|
|
201
|
+
Args:
|
|
202
|
+
text: The transcribed voice input
|
|
203
|
+
|
|
204
|
+
Returns:
|
|
205
|
+
TalkResponse with the processed response
|
|
206
|
+
"""
|
|
207
|
+
try:
|
|
208
|
+
# Use ChatSDK to generate response (with conversation history)
|
|
209
|
+
chat_response = self.chat_sdk.send(text)
|
|
210
|
+
|
|
211
|
+
# If TTS is enabled, speak the response
|
|
212
|
+
if self.config.enable_tts and getattr(self.audio_client, "tts", None):
|
|
213
|
+
await self.audio_client.speak_text(chat_response.text)
|
|
214
|
+
|
|
215
|
+
stats = None
|
|
216
|
+
if self.show_stats:
|
|
217
|
+
stats = chat_response.stats or self.get_stats()
|
|
218
|
+
|
|
219
|
+
return TalkResponse(text=chat_response.text, stats=stats, is_complete=True)
|
|
220
|
+
|
|
221
|
+
except Exception as e:
|
|
222
|
+
self.log.error(f"Error processing voice input: {e}")
|
|
223
|
+
raise
|
|
224
|
+
|
|
225
|
+
async def start_voice_session(
|
|
226
|
+
self,
|
|
227
|
+
on_voice_input: Optional[Callable[[str], None]] = None,
|
|
228
|
+
) -> None:
|
|
229
|
+
"""
|
|
230
|
+
Start an interactive voice session.
|
|
231
|
+
|
|
232
|
+
Args:
|
|
233
|
+
on_voice_input: Optional callback called when voice input is detected
|
|
234
|
+
"""
|
|
235
|
+
try:
|
|
236
|
+
self._voice_session_active = True
|
|
237
|
+
|
|
238
|
+
# Initialize TTS if enabled
|
|
239
|
+
self.audio_client.initialize_tts()
|
|
240
|
+
|
|
241
|
+
# Create voice processor that uses ChatSDK for responses
|
|
242
|
+
async def voice_processor(text: str):
|
|
243
|
+
# Call user callback if provided
|
|
244
|
+
if on_voice_input:
|
|
245
|
+
on_voice_input(text)
|
|
246
|
+
|
|
247
|
+
# Use ChatSDK to generate response (with conversation history)
|
|
248
|
+
chat_response = self.chat_sdk.send(text)
|
|
249
|
+
|
|
250
|
+
# If TTS is enabled, speak the response
|
|
251
|
+
if self.config.enable_tts and getattr(self.audio_client, "tts", None):
|
|
252
|
+
await self.audio_client.speak_text(chat_response.text)
|
|
253
|
+
|
|
254
|
+
# Print the response for user feedback
|
|
255
|
+
print(f"{self.config.assistant_name.title()}: {chat_response.text}")
|
|
256
|
+
|
|
257
|
+
# Show stats if enabled
|
|
258
|
+
if self.show_stats and chat_response.stats:
|
|
259
|
+
print(f"Stats: {chat_response.stats}")
|
|
260
|
+
|
|
261
|
+
# Start voice chat session with our processor
|
|
262
|
+
await self.audio_client.start_voice_chat(voice_processor)
|
|
263
|
+
|
|
264
|
+
except KeyboardInterrupt:
|
|
265
|
+
self.log.info("Voice session interrupted by user")
|
|
266
|
+
except Exception as e:
|
|
267
|
+
self.log.error(f"Error in voice session: {e}")
|
|
268
|
+
raise
|
|
269
|
+
finally:
|
|
270
|
+
self._voice_session_active = False
|
|
271
|
+
self.log.info("Voice chat session ended")
|
|
272
|
+
|
|
273
|
+
async def halt_generation(self) -> None:
|
|
274
|
+
"""Halt the current LLM generation."""
|
|
275
|
+
try:
|
|
276
|
+
await self.audio_client.halt_generation()
|
|
277
|
+
except Exception as e:
|
|
278
|
+
self.log.error(f"Error halting generation: {e}")
|
|
279
|
+
raise
|
|
280
|
+
|
|
281
|
+
def get_stats(self) -> Dict[str, Any]:
|
|
282
|
+
"""
|
|
283
|
+
Get performance statistics.
|
|
284
|
+
|
|
285
|
+
Returns:
|
|
286
|
+
Dictionary of performance stats
|
|
287
|
+
"""
|
|
288
|
+
try:
|
|
289
|
+
# Get stats from ChatSDK instead of directly from LLMClient
|
|
290
|
+
return self.chat_sdk.get_stats()
|
|
291
|
+
except Exception as e:
|
|
292
|
+
self.log.warning(f"Failed to get stats: {e}")
|
|
293
|
+
return {}
|
|
294
|
+
|
|
295
|
+
def update_config(self, **kwargs) -> None:
|
|
296
|
+
"""
|
|
297
|
+
Update configuration dynamically.
|
|
298
|
+
|
|
299
|
+
Args:
|
|
300
|
+
**kwargs: Configuration parameters to update
|
|
301
|
+
"""
|
|
302
|
+
# Update our config
|
|
303
|
+
for key, value in kwargs.items():
|
|
304
|
+
if hasattr(self.config, key):
|
|
305
|
+
setattr(self.config, key, value)
|
|
306
|
+
|
|
307
|
+
# Update show_stats
|
|
308
|
+
if "show_stats" in kwargs:
|
|
309
|
+
self.show_stats = kwargs["show_stats"]
|
|
310
|
+
|
|
311
|
+
# Update AudioClient configuration
|
|
312
|
+
if "silence_threshold" in kwargs:
|
|
313
|
+
self.audio_client.silence_threshold = kwargs["silence_threshold"]
|
|
314
|
+
|
|
315
|
+
# Update ChatSDK configuration
|
|
316
|
+
chat_updates = {}
|
|
317
|
+
if "system_prompt" in kwargs:
|
|
318
|
+
chat_updates["system_prompt"] = kwargs["system_prompt"]
|
|
319
|
+
# Also update AudioClient's system prompt for consistency
|
|
320
|
+
self.audio_client.llm_client.system_prompt = kwargs["system_prompt"]
|
|
321
|
+
if "max_tokens" in kwargs:
|
|
322
|
+
chat_updates["max_tokens"] = kwargs["max_tokens"]
|
|
323
|
+
if "max_history_length" in kwargs:
|
|
324
|
+
chat_updates["max_history_length"] = kwargs["max_history_length"]
|
|
325
|
+
if "assistant_name" in kwargs:
|
|
326
|
+
chat_updates["assistant_name"] = kwargs["assistant_name"]
|
|
327
|
+
|
|
328
|
+
if chat_updates:
|
|
329
|
+
self.chat_sdk.update_config(**chat_updates)
|
|
330
|
+
|
|
331
|
+
def clear_history(self) -> None:
|
|
332
|
+
"""Clear the conversation history."""
|
|
333
|
+
self.chat_sdk.clear_history()
|
|
334
|
+
self.log.debug("Conversation history cleared")
|
|
335
|
+
|
|
336
|
+
def get_history(self) -> list:
|
|
337
|
+
"""Get the current conversation history."""
|
|
338
|
+
return self.chat_sdk.get_history()
|
|
339
|
+
|
|
340
|
+
def get_formatted_history(self) -> list:
|
|
341
|
+
"""Get the conversation history in structured format."""
|
|
342
|
+
return self.chat_sdk.get_formatted_history()
|
|
343
|
+
|
|
344
|
+
def enable_rag(self, documents: Optional[list] = None, **rag_kwargs) -> bool:
|
|
345
|
+
"""
|
|
346
|
+
Enable RAG (Retrieval-Augmented Generation) for document-based voice/text chat.
|
|
347
|
+
|
|
348
|
+
Args:
|
|
349
|
+
documents: List of PDF file paths to index
|
|
350
|
+
**rag_kwargs: Additional RAG configuration options
|
|
351
|
+
|
|
352
|
+
Returns:
|
|
353
|
+
True if RAG was successfully enabled
|
|
354
|
+
"""
|
|
355
|
+
try:
|
|
356
|
+
self.chat_sdk.enable_rag(documents=documents, **rag_kwargs)
|
|
357
|
+
self.log.info(
|
|
358
|
+
f"RAG enabled with {len(documents) if documents else 0} documents"
|
|
359
|
+
)
|
|
360
|
+
return True
|
|
361
|
+
except ImportError:
|
|
362
|
+
self.log.warning(
|
|
363
|
+
'RAG dependencies not available. Install with: pip install -e ".[rag]"'
|
|
364
|
+
)
|
|
365
|
+
return False
|
|
366
|
+
except Exception as e:
|
|
367
|
+
self.log.error(f"Failed to enable RAG: {e}")
|
|
368
|
+
return False
|
|
369
|
+
|
|
370
|
+
def disable_rag(self) -> None:
|
|
371
|
+
"""Disable RAG functionality."""
|
|
372
|
+
self.chat_sdk.disable_rag()
|
|
373
|
+
self.log.info("RAG disabled")
|
|
374
|
+
|
|
375
|
+
def add_document(self, document_path: str) -> bool:
|
|
376
|
+
"""
|
|
377
|
+
Add a document to the RAG index.
|
|
378
|
+
|
|
379
|
+
Args:
|
|
380
|
+
document_path: Path to PDF file to index
|
|
381
|
+
|
|
382
|
+
Returns:
|
|
383
|
+
True if document was successfully added
|
|
384
|
+
"""
|
|
385
|
+
if not self.chat_sdk.rag_enabled:
|
|
386
|
+
self.log.warning("RAG not enabled. Call enable_rag() first.")
|
|
387
|
+
return False
|
|
388
|
+
|
|
389
|
+
try:
|
|
390
|
+
return self.chat_sdk.add_document(document_path)
|
|
391
|
+
except Exception as e:
|
|
392
|
+
self.log.error(f"Failed to add document {document_path}: {e}")
|
|
393
|
+
return False
|
|
394
|
+
|
|
395
|
+
@property
|
|
396
|
+
def is_voice_session_active(self) -> bool:
|
|
397
|
+
"""Check if a voice session is currently active."""
|
|
398
|
+
return self._voice_session_active
|
|
399
|
+
|
|
400
|
+
@property
|
|
401
|
+
def audio_devices(self) -> list:
|
|
402
|
+
"""Get list of available audio input devices."""
|
|
403
|
+
try:
|
|
404
|
+
from gaia.audio.audio_recorder import AudioRecorder
|
|
405
|
+
|
|
406
|
+
recorder = AudioRecorder()
|
|
407
|
+
return recorder.list_audio_devices()
|
|
408
|
+
except Exception as e:
|
|
409
|
+
self.log.error(f"Error listing audio devices: {e}")
|
|
410
|
+
return []
|
|
411
|
+
|
|
412
|
+
|
|
413
|
+
class SimpleTalk:
|
|
414
|
+
"""
|
|
415
|
+
Ultra-simple interface for quick integration.
|
|
416
|
+
|
|
417
|
+
Example usage:
|
|
418
|
+
```python
|
|
419
|
+
from gaia.talk.sdk import SimpleTalk
|
|
420
|
+
|
|
421
|
+
talk = SimpleTalk()
|
|
422
|
+
|
|
423
|
+
# Simple text chat
|
|
424
|
+
response = await talk.ask("What's the weather like?")
|
|
425
|
+
print(response)
|
|
426
|
+
|
|
427
|
+
# Simple voice chat
|
|
428
|
+
await talk.voice_chat() # Starts interactive session
|
|
429
|
+
```
|
|
430
|
+
"""
|
|
431
|
+
|
|
432
|
+
def __init__(
|
|
433
|
+
self,
|
|
434
|
+
system_prompt: Optional[str] = None,
|
|
435
|
+
enable_tts: bool = True,
|
|
436
|
+
assistant_name: str = "gaia",
|
|
437
|
+
):
|
|
438
|
+
"""
|
|
439
|
+
Initialize SimpleTalk with minimal configuration.
|
|
440
|
+
|
|
441
|
+
Args:
|
|
442
|
+
system_prompt: Optional system prompt for the AI
|
|
443
|
+
enable_tts: Whether to enable text-to-speech
|
|
444
|
+
assistant_name: Name to use for the assistant
|
|
445
|
+
"""
|
|
446
|
+
config = TalkConfig(
|
|
447
|
+
system_prompt=system_prompt,
|
|
448
|
+
enable_tts=enable_tts,
|
|
449
|
+
assistant_name=assistant_name,
|
|
450
|
+
show_stats=False,
|
|
451
|
+
logging_level="WARNING", # Minimal logging
|
|
452
|
+
)
|
|
453
|
+
self._sdk = TalkSDK(config)
|
|
454
|
+
|
|
455
|
+
async def ask(self, question: str) -> str:
|
|
456
|
+
"""
|
|
457
|
+
Ask a question and get a text response.
|
|
458
|
+
|
|
459
|
+
Args:
|
|
460
|
+
question: The question to ask
|
|
461
|
+
|
|
462
|
+
Returns:
|
|
463
|
+
The AI's response as a string
|
|
464
|
+
"""
|
|
465
|
+
response = await self._sdk.chat(question)
|
|
466
|
+
return response.text
|
|
467
|
+
|
|
468
|
+
async def ask_stream(self, question: str):
|
|
469
|
+
"""
|
|
470
|
+
Ask a question and get a streaming response.
|
|
471
|
+
|
|
472
|
+
Args:
|
|
473
|
+
question: The question to ask
|
|
474
|
+
|
|
475
|
+
Yields:
|
|
476
|
+
Response chunks as they arrive
|
|
477
|
+
"""
|
|
478
|
+
async for chunk in self._sdk.chat_stream(question):
|
|
479
|
+
if not chunk.is_complete:
|
|
480
|
+
yield chunk.text
|
|
481
|
+
|
|
482
|
+
async def voice_chat(self) -> None:
|
|
483
|
+
"""Start an interactive voice chat session."""
|
|
484
|
+
print("Starting voice chat... Say 'stop' to quit or press Ctrl+C")
|
|
485
|
+
|
|
486
|
+
def on_voice_input(text: str):
|
|
487
|
+
print(f"You: {text}")
|
|
488
|
+
|
|
489
|
+
await self._sdk.start_voice_session(on_voice_input)
|
|
490
|
+
|
|
491
|
+
def clear_memory(self) -> None:
|
|
492
|
+
"""Clear the conversation memory."""
|
|
493
|
+
self._sdk.clear_history()
|
|
494
|
+
|
|
495
|
+
def get_conversation(self) -> list:
|
|
496
|
+
"""Get the conversation history in a readable format."""
|
|
497
|
+
return self._sdk.get_formatted_history()
|
|
498
|
+
|
|
499
|
+
|
|
500
|
+
# Convenience functions for one-off usage
|
|
501
|
+
async def quick_chat(
|
|
502
|
+
message: str, system_prompt: Optional[str] = None, assistant_name: str = "gaia"
|
|
503
|
+
) -> str:
|
|
504
|
+
"""
|
|
505
|
+
Quick one-off text chat with conversation memory.
|
|
506
|
+
|
|
507
|
+
Args:
|
|
508
|
+
message: Message to send
|
|
509
|
+
system_prompt: Optional system prompt
|
|
510
|
+
assistant_name: Name to use for the assistant
|
|
511
|
+
|
|
512
|
+
Returns:
|
|
513
|
+
AI response
|
|
514
|
+
"""
|
|
515
|
+
config = TalkConfig(
|
|
516
|
+
system_prompt=system_prompt,
|
|
517
|
+
assistant_name=assistant_name,
|
|
518
|
+
enable_tts=False,
|
|
519
|
+
logging_level="WARNING",
|
|
520
|
+
max_history_length=2, # Small history for quick chat
|
|
521
|
+
)
|
|
522
|
+
sdk = TalkSDK(config)
|
|
523
|
+
response = await sdk.chat(message)
|
|
524
|
+
return response.text
|
|
525
|
+
|
|
526
|
+
|
|
527
|
+
async def quick_voice_chat(
|
|
528
|
+
system_prompt: Optional[str] = None, assistant_name: str = "gaia"
|
|
529
|
+
) -> None:
|
|
530
|
+
"""
|
|
531
|
+
Quick one-off voice chat session with conversation memory.
|
|
532
|
+
|
|
533
|
+
Args:
|
|
534
|
+
system_prompt: Optional system prompt
|
|
535
|
+
assistant_name: Name to use for the assistant
|
|
536
|
+
"""
|
|
537
|
+
simple = SimpleTalk(system_prompt=system_prompt, assistant_name=assistant_name)
|
|
538
|
+
await simple.voice_chat()
|
gaia/util.py
ADDED
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
# Copyright(C) 2024-2025 Advanced Micro Devices, Inc. All rights reserved.
|
|
2
|
+
# SPDX-License-Identifier: MIT
|
|
3
|
+
|
|
4
|
+
import subprocess
|
|
5
|
+
import time
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
def kill_process_on_port(port):
|
|
9
|
+
"""Kill any process running on the specified port."""
|
|
10
|
+
try:
|
|
11
|
+
# Find process using the port
|
|
12
|
+
result = subprocess.run(
|
|
13
|
+
f"netstat -ano | findstr :{port}",
|
|
14
|
+
shell=True,
|
|
15
|
+
capture_output=True,
|
|
16
|
+
text=True,
|
|
17
|
+
check=False,
|
|
18
|
+
)
|
|
19
|
+
|
|
20
|
+
if result.stdout:
|
|
21
|
+
# Extract PID
|
|
22
|
+
pids_to_kill = set()
|
|
23
|
+
for line in result.stdout.strip().split("\n"):
|
|
24
|
+
if f":{port}" in line and (
|
|
25
|
+
"LISTENING" in line or "ESTABLISHED" in line
|
|
26
|
+
):
|
|
27
|
+
parts = line.strip().split()
|
|
28
|
+
if len(parts) > 4:
|
|
29
|
+
pid = parts[-1]
|
|
30
|
+
pids_to_kill.add(pid)
|
|
31
|
+
|
|
32
|
+
# Kill each process found
|
|
33
|
+
for pid in pids_to_kill:
|
|
34
|
+
print(f"Found process with PID {pid} on port {port}")
|
|
35
|
+
try:
|
|
36
|
+
# Kill the process
|
|
37
|
+
subprocess.run(f"taskkill /F /PID {pid}", shell=True, check=False)
|
|
38
|
+
print(f"Killed process with PID {pid}")
|
|
39
|
+
except Exception as e:
|
|
40
|
+
print(f"Error killing PID {pid}: {e}")
|
|
41
|
+
|
|
42
|
+
# Give the OS some time to free the port
|
|
43
|
+
if pids_to_kill:
|
|
44
|
+
time.sleep(2)
|
|
45
|
+
except Exception as e:
|
|
46
|
+
print(f"Error killing process on port {port}: {e}")
|
gaia/version.py
ADDED
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
# Copyright(C) 2024-2025 Advanced Micro Devices, Inc. All rights reserved.
|
|
2
|
+
# SPDX-License-Identifier: MIT
|
|
3
|
+
|
|
4
|
+
import logging
|
|
5
|
+
import os
|
|
6
|
+
import subprocess
|
|
7
|
+
from importlib.metadata import version as get_package_version_metadata
|
|
8
|
+
|
|
9
|
+
__version__ = "0.14.1"
|
|
10
|
+
|
|
11
|
+
# Lemonade version used across CI and installer
|
|
12
|
+
LEMONADE_VERSION = "9.1.0"
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
def get_package_version() -> str:
|
|
16
|
+
"""Get the installed package version from importlib.metadata.
|
|
17
|
+
|
|
18
|
+
Returns:
|
|
19
|
+
str: The package version string
|
|
20
|
+
"""
|
|
21
|
+
try:
|
|
22
|
+
return get_package_version_metadata("amd-gaia")
|
|
23
|
+
except Exception as e:
|
|
24
|
+
logging.warning(f"Failed to get package version: {e}")
|
|
25
|
+
return ""
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
def get_git_hash(hash_length: int = 8) -> str:
|
|
29
|
+
"""Get the current git hash.
|
|
30
|
+
Only used during build/installer process.
|
|
31
|
+
|
|
32
|
+
Args:
|
|
33
|
+
hash_length: Length of the hash to return
|
|
34
|
+
|
|
35
|
+
Returns:
|
|
36
|
+
str: The git hash or 'unknown' if git is not available
|
|
37
|
+
"""
|
|
38
|
+
try:
|
|
39
|
+
git_hash = subprocess.check_output(
|
|
40
|
+
["git", "rev-parse", "--short", "HEAD"],
|
|
41
|
+
stderr=subprocess.DEVNULL,
|
|
42
|
+
text=True,
|
|
43
|
+
).strip()
|
|
44
|
+
return git_hash[:hash_length]
|
|
45
|
+
except Exception:
|
|
46
|
+
logging.warning("Failed to get Git hash")
|
|
47
|
+
return ""
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
def get_version_with_hash() -> str:
|
|
51
|
+
"""Get the full version string including git hash.
|
|
52
|
+
Only used during build/installer process.
|
|
53
|
+
|
|
54
|
+
Returns:
|
|
55
|
+
str: Version string in format 'v{version}+{hash}'
|
|
56
|
+
"""
|
|
57
|
+
git_hash = get_git_hash()
|
|
58
|
+
if git_hash:
|
|
59
|
+
return f"v{__version__}+{git_hash}"
|
|
60
|
+
else:
|
|
61
|
+
return f"v{__version__}"
|
|
62
|
+
|
|
63
|
+
|
|
64
|
+
def write_version_files() -> None:
|
|
65
|
+
"""Write version information to version.txt and installer/version.nsh files.
|
|
66
|
+
Only used during build/installer process."""
|
|
67
|
+
try:
|
|
68
|
+
# Write version with hash to version.txt
|
|
69
|
+
with open("version.txt", "w", encoding="utf-8") as f:
|
|
70
|
+
f.write(get_version_with_hash())
|
|
71
|
+
|
|
72
|
+
# Write version with hash to installer/version.nsh
|
|
73
|
+
installer_dir = os.path.join("installer")
|
|
74
|
+
os.makedirs(installer_dir, exist_ok=True)
|
|
75
|
+
with open(
|
|
76
|
+
os.path.join(installer_dir, "version.nsh"), "w", encoding="utf-8"
|
|
77
|
+
) as f:
|
|
78
|
+
f.write(f'!define GAIA_VERSION "{get_version_with_hash()}"\n')
|
|
79
|
+
f.write(f'!define LEMONADE_VERSION "{LEMONADE_VERSION}"\n')
|
|
80
|
+
|
|
81
|
+
print(
|
|
82
|
+
"Version files created successfully: version.txt and installer/version.nsh"
|
|
83
|
+
)
|
|
84
|
+
except Exception as e:
|
|
85
|
+
print(f"Failed to write version files: {str(e)}")
|
|
86
|
+
raise
|
|
87
|
+
|
|
88
|
+
|
|
89
|
+
# For regular package usage - just version number
|
|
90
|
+
version = get_package_version()
|
|
91
|
+
|
|
92
|
+
|
|
93
|
+
def main():
|
|
94
|
+
"""Generate version files when the script is run directly.
|
|
95
|
+
Only used during build/installer process."""
|
|
96
|
+
write_version_files()
|
|
97
|
+
|
|
98
|
+
|
|
99
|
+
if __name__ == "__main__":
|
|
100
|
+
main()
|