amd-gaia 0.14.1__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- amd_gaia-0.14.1.dist-info/METADATA +768 -0
- amd_gaia-0.14.1.dist-info/RECORD +800 -0
- amd_gaia-0.14.1.dist-info/WHEEL +5 -0
- amd_gaia-0.14.1.dist-info/entry_points.txt +5 -0
- amd_gaia-0.14.1.dist-info/licenses/LICENSE.md +21 -0
- amd_gaia-0.14.1.dist-info/top_level.txt +1 -0
- gaia/__init__.py +2 -0
- gaia/agents/__init__.py +19 -0
- gaia/agents/base/__init__.py +9 -0
- gaia/agents/base/agent.py +2072 -0
- gaia/agents/base/api_agent.py +120 -0
- gaia/agents/base/console.py +1457 -0
- gaia/agents/base/mcp_agent.py +86 -0
- gaia/agents/base/tools.py +83 -0
- gaia/agents/blender/agent.py +556 -0
- gaia/agents/blender/agent_simple.py +135 -0
- gaia/agents/blender/app.py +211 -0
- gaia/agents/blender/app_simple.py +41 -0
- gaia/agents/blender/core/__init__.py +16 -0
- gaia/agents/blender/core/materials.py +506 -0
- gaia/agents/blender/core/objects.py +316 -0
- gaia/agents/blender/core/rendering.py +225 -0
- gaia/agents/blender/core/scene.py +220 -0
- gaia/agents/blender/core/view.py +146 -0
- gaia/agents/chat/__init__.py +9 -0
- gaia/agents/chat/agent.py +975 -0
- gaia/agents/chat/app.py +1058 -0
- gaia/agents/chat/session.py +508 -0
- gaia/agents/chat/tools/__init__.py +15 -0
- gaia/agents/chat/tools/file_tools.py +96 -0
- gaia/agents/chat/tools/rag_tools.py +1729 -0
- gaia/agents/chat/tools/shell_tools.py +436 -0
- gaia/agents/code/__init__.py +7 -0
- gaia/agents/code/agent.py +547 -0
- gaia/agents/code/app.py +266 -0
- gaia/agents/code/models.py +135 -0
- gaia/agents/code/orchestration/__init__.py +24 -0
- gaia/agents/code/orchestration/checklist_executor.py +1739 -0
- gaia/agents/code/orchestration/checklist_generator.py +709 -0
- gaia/agents/code/orchestration/factories/__init__.py +9 -0
- gaia/agents/code/orchestration/factories/base.py +63 -0
- gaia/agents/code/orchestration/factories/nextjs_factory.py +118 -0
- gaia/agents/code/orchestration/factories/python_factory.py +106 -0
- gaia/agents/code/orchestration/orchestrator.py +610 -0
- gaia/agents/code/orchestration/project_analyzer.py +391 -0
- gaia/agents/code/orchestration/steps/__init__.py +67 -0
- gaia/agents/code/orchestration/steps/base.py +188 -0
- gaia/agents/code/orchestration/steps/error_handler.py +314 -0
- gaia/agents/code/orchestration/steps/nextjs.py +828 -0
- gaia/agents/code/orchestration/steps/python.py +307 -0
- gaia/agents/code/orchestration/template_catalog.py +463 -0
- gaia/agents/code/orchestration/workflows/__init__.py +14 -0
- gaia/agents/code/orchestration/workflows/base.py +80 -0
- gaia/agents/code/orchestration/workflows/nextjs.py +186 -0
- gaia/agents/code/orchestration/workflows/python.py +94 -0
- gaia/agents/code/prompts/__init__.py +11 -0
- gaia/agents/code/prompts/base_prompt.py +77 -0
- gaia/agents/code/prompts/code_patterns.py +1925 -0
- gaia/agents/code/prompts/nextjs_prompt.py +40 -0
- gaia/agents/code/prompts/python_prompt.py +109 -0
- gaia/agents/code/schema_inference.py +365 -0
- gaia/agents/code/system_prompt.py +41 -0
- gaia/agents/code/tools/__init__.py +42 -0
- gaia/agents/code/tools/cli_tools.py +1138 -0
- gaia/agents/code/tools/code_formatting.py +319 -0
- gaia/agents/code/tools/code_tools.py +769 -0
- gaia/agents/code/tools/error_fixing.py +1347 -0
- gaia/agents/code/tools/external_tools.py +180 -0
- gaia/agents/code/tools/file_io.py +845 -0
- gaia/agents/code/tools/prisma_tools.py +190 -0
- gaia/agents/code/tools/project_management.py +1016 -0
- gaia/agents/code/tools/testing.py +321 -0
- gaia/agents/code/tools/typescript_tools.py +122 -0
- gaia/agents/code/tools/validation_parsing.py +461 -0
- gaia/agents/code/tools/validation_tools.py +803 -0
- gaia/agents/code/tools/web_dev_tools.py +1744 -0
- gaia/agents/code/validators/__init__.py +16 -0
- gaia/agents/code/validators/antipattern_checker.py +241 -0
- gaia/agents/code/validators/ast_analyzer.py +197 -0
- gaia/agents/code/validators/requirements_validator.py +145 -0
- gaia/agents/code/validators/syntax_validator.py +171 -0
- gaia/agents/docker/__init__.py +7 -0
- gaia/agents/docker/agent.py +642 -0
- gaia/agents/jira/__init__.py +11 -0
- gaia/agents/jira/agent.py +894 -0
- gaia/agents/jira/jql_templates.py +299 -0
- gaia/agents/routing/__init__.py +7 -0
- gaia/agents/routing/agent.py +512 -0
- gaia/agents/routing/system_prompt.py +75 -0
- gaia/api/__init__.py +23 -0
- gaia/api/agent_registry.py +238 -0
- gaia/api/app.py +305 -0
- gaia/api/openai_server.py +575 -0
- gaia/api/schemas.py +186 -0
- gaia/api/sse_handler.py +370 -0
- gaia/apps/__init__.py +4 -0
- gaia/apps/llm/__init__.py +6 -0
- gaia/apps/llm/app.py +169 -0
- gaia/apps/summarize/app.py +633 -0
- gaia/apps/summarize/html_viewer.py +133 -0
- gaia/apps/summarize/pdf_formatter.py +284 -0
- gaia/audio/__init__.py +2 -0
- gaia/audio/audio_client.py +439 -0
- gaia/audio/audio_recorder.py +269 -0
- gaia/audio/kokoro_tts.py +599 -0
- gaia/audio/whisper_asr.py +432 -0
- gaia/chat/__init__.py +16 -0
- gaia/chat/app.py +430 -0
- gaia/chat/prompts.py +522 -0
- gaia/chat/sdk.py +1200 -0
- gaia/cli.py +5621 -0
- gaia/eval/batch_experiment.py +2332 -0
- gaia/eval/claude.py +542 -0
- gaia/eval/config.py +37 -0
- gaia/eval/email_generator.py +512 -0
- gaia/eval/eval.py +3179 -0
- gaia/eval/groundtruth.py +1130 -0
- gaia/eval/transcript_generator.py +582 -0
- gaia/eval/webapp/README.md +168 -0
- gaia/eval/webapp/node_modules/.bin/mime +16 -0
- gaia/eval/webapp/node_modules/.bin/mime.cmd +17 -0
- gaia/eval/webapp/node_modules/.bin/mime.ps1 +28 -0
- gaia/eval/webapp/node_modules/.package-lock.json +865 -0
- gaia/eval/webapp/node_modules/accepts/HISTORY.md +243 -0
- gaia/eval/webapp/node_modules/accepts/LICENSE +23 -0
- gaia/eval/webapp/node_modules/accepts/README.md +140 -0
- gaia/eval/webapp/node_modules/accepts/index.js +238 -0
- gaia/eval/webapp/node_modules/accepts/package.json +47 -0
- gaia/eval/webapp/node_modules/array-flatten/LICENSE +21 -0
- gaia/eval/webapp/node_modules/array-flatten/README.md +43 -0
- gaia/eval/webapp/node_modules/array-flatten/array-flatten.js +64 -0
- gaia/eval/webapp/node_modules/array-flatten/package.json +39 -0
- gaia/eval/webapp/node_modules/body-parser/HISTORY.md +672 -0
- gaia/eval/webapp/node_modules/body-parser/LICENSE +23 -0
- gaia/eval/webapp/node_modules/body-parser/README.md +476 -0
- gaia/eval/webapp/node_modules/body-parser/SECURITY.md +25 -0
- gaia/eval/webapp/node_modules/body-parser/index.js +156 -0
- gaia/eval/webapp/node_modules/body-parser/lib/read.js +205 -0
- gaia/eval/webapp/node_modules/body-parser/lib/types/json.js +247 -0
- gaia/eval/webapp/node_modules/body-parser/lib/types/raw.js +101 -0
- gaia/eval/webapp/node_modules/body-parser/lib/types/text.js +121 -0
- gaia/eval/webapp/node_modules/body-parser/lib/types/urlencoded.js +307 -0
- gaia/eval/webapp/node_modules/body-parser/package.json +56 -0
- gaia/eval/webapp/node_modules/bytes/History.md +97 -0
- gaia/eval/webapp/node_modules/bytes/LICENSE +23 -0
- gaia/eval/webapp/node_modules/bytes/Readme.md +152 -0
- gaia/eval/webapp/node_modules/bytes/index.js +170 -0
- gaia/eval/webapp/node_modules/bytes/package.json +42 -0
- gaia/eval/webapp/node_modules/call-bind-apply-helpers/.eslintrc +17 -0
- gaia/eval/webapp/node_modules/call-bind-apply-helpers/.github/FUNDING.yml +12 -0
- gaia/eval/webapp/node_modules/call-bind-apply-helpers/.nycrc +9 -0
- gaia/eval/webapp/node_modules/call-bind-apply-helpers/CHANGELOG.md +30 -0
- gaia/eval/webapp/node_modules/call-bind-apply-helpers/LICENSE +21 -0
- gaia/eval/webapp/node_modules/call-bind-apply-helpers/README.md +62 -0
- gaia/eval/webapp/node_modules/call-bind-apply-helpers/actualApply.d.ts +1 -0
- gaia/eval/webapp/node_modules/call-bind-apply-helpers/actualApply.js +10 -0
- gaia/eval/webapp/node_modules/call-bind-apply-helpers/applyBind.d.ts +19 -0
- gaia/eval/webapp/node_modules/call-bind-apply-helpers/applyBind.js +10 -0
- gaia/eval/webapp/node_modules/call-bind-apply-helpers/functionApply.d.ts +1 -0
- gaia/eval/webapp/node_modules/call-bind-apply-helpers/functionApply.js +4 -0
- gaia/eval/webapp/node_modules/call-bind-apply-helpers/functionCall.d.ts +1 -0
- gaia/eval/webapp/node_modules/call-bind-apply-helpers/functionCall.js +4 -0
- gaia/eval/webapp/node_modules/call-bind-apply-helpers/index.d.ts +64 -0
- gaia/eval/webapp/node_modules/call-bind-apply-helpers/index.js +15 -0
- gaia/eval/webapp/node_modules/call-bind-apply-helpers/package.json +85 -0
- gaia/eval/webapp/node_modules/call-bind-apply-helpers/reflectApply.d.ts +3 -0
- gaia/eval/webapp/node_modules/call-bind-apply-helpers/reflectApply.js +4 -0
- gaia/eval/webapp/node_modules/call-bind-apply-helpers/test/index.js +63 -0
- gaia/eval/webapp/node_modules/call-bind-apply-helpers/tsconfig.json +9 -0
- gaia/eval/webapp/node_modules/call-bound/.eslintrc +13 -0
- gaia/eval/webapp/node_modules/call-bound/.github/FUNDING.yml +12 -0
- gaia/eval/webapp/node_modules/call-bound/.nycrc +9 -0
- gaia/eval/webapp/node_modules/call-bound/CHANGELOG.md +42 -0
- gaia/eval/webapp/node_modules/call-bound/LICENSE +21 -0
- gaia/eval/webapp/node_modules/call-bound/README.md +53 -0
- gaia/eval/webapp/node_modules/call-bound/index.d.ts +94 -0
- gaia/eval/webapp/node_modules/call-bound/index.js +19 -0
- gaia/eval/webapp/node_modules/call-bound/package.json +99 -0
- gaia/eval/webapp/node_modules/call-bound/test/index.js +61 -0
- gaia/eval/webapp/node_modules/call-bound/tsconfig.json +10 -0
- gaia/eval/webapp/node_modules/content-disposition/HISTORY.md +60 -0
- gaia/eval/webapp/node_modules/content-disposition/LICENSE +22 -0
- gaia/eval/webapp/node_modules/content-disposition/README.md +142 -0
- gaia/eval/webapp/node_modules/content-disposition/index.js +458 -0
- gaia/eval/webapp/node_modules/content-disposition/package.json +44 -0
- gaia/eval/webapp/node_modules/content-type/HISTORY.md +29 -0
- gaia/eval/webapp/node_modules/content-type/LICENSE +22 -0
- gaia/eval/webapp/node_modules/content-type/README.md +94 -0
- gaia/eval/webapp/node_modules/content-type/index.js +225 -0
- gaia/eval/webapp/node_modules/content-type/package.json +42 -0
- gaia/eval/webapp/node_modules/cookie/LICENSE +24 -0
- gaia/eval/webapp/node_modules/cookie/README.md +317 -0
- gaia/eval/webapp/node_modules/cookie/SECURITY.md +25 -0
- gaia/eval/webapp/node_modules/cookie/index.js +334 -0
- gaia/eval/webapp/node_modules/cookie/package.json +44 -0
- gaia/eval/webapp/node_modules/cookie-signature/.npmignore +4 -0
- gaia/eval/webapp/node_modules/cookie-signature/History.md +38 -0
- gaia/eval/webapp/node_modules/cookie-signature/Readme.md +42 -0
- gaia/eval/webapp/node_modules/cookie-signature/index.js +51 -0
- gaia/eval/webapp/node_modules/cookie-signature/package.json +18 -0
- gaia/eval/webapp/node_modules/debug/.coveralls.yml +1 -0
- gaia/eval/webapp/node_modules/debug/.eslintrc +11 -0
- gaia/eval/webapp/node_modules/debug/.npmignore +9 -0
- gaia/eval/webapp/node_modules/debug/.travis.yml +14 -0
- gaia/eval/webapp/node_modules/debug/CHANGELOG.md +362 -0
- gaia/eval/webapp/node_modules/debug/LICENSE +19 -0
- gaia/eval/webapp/node_modules/debug/Makefile +50 -0
- gaia/eval/webapp/node_modules/debug/README.md +312 -0
- gaia/eval/webapp/node_modules/debug/component.json +19 -0
- gaia/eval/webapp/node_modules/debug/karma.conf.js +70 -0
- gaia/eval/webapp/node_modules/debug/node.js +1 -0
- gaia/eval/webapp/node_modules/debug/package.json +49 -0
- gaia/eval/webapp/node_modules/debug/src/browser.js +185 -0
- gaia/eval/webapp/node_modules/debug/src/debug.js +202 -0
- gaia/eval/webapp/node_modules/debug/src/index.js +10 -0
- gaia/eval/webapp/node_modules/debug/src/inspector-log.js +15 -0
- gaia/eval/webapp/node_modules/debug/src/node.js +248 -0
- gaia/eval/webapp/node_modules/depd/History.md +103 -0
- gaia/eval/webapp/node_modules/depd/LICENSE +22 -0
- gaia/eval/webapp/node_modules/depd/Readme.md +280 -0
- gaia/eval/webapp/node_modules/depd/index.js +538 -0
- gaia/eval/webapp/node_modules/depd/lib/browser/index.js +77 -0
- gaia/eval/webapp/node_modules/depd/package.json +45 -0
- gaia/eval/webapp/node_modules/destroy/LICENSE +23 -0
- gaia/eval/webapp/node_modules/destroy/README.md +63 -0
- gaia/eval/webapp/node_modules/destroy/index.js +209 -0
- gaia/eval/webapp/node_modules/destroy/package.json +48 -0
- gaia/eval/webapp/node_modules/dunder-proto/.eslintrc +5 -0
- gaia/eval/webapp/node_modules/dunder-proto/.github/FUNDING.yml +12 -0
- gaia/eval/webapp/node_modules/dunder-proto/.nycrc +13 -0
- gaia/eval/webapp/node_modules/dunder-proto/CHANGELOG.md +24 -0
- gaia/eval/webapp/node_modules/dunder-proto/LICENSE +21 -0
- gaia/eval/webapp/node_modules/dunder-proto/README.md +54 -0
- gaia/eval/webapp/node_modules/dunder-proto/get.d.ts +5 -0
- gaia/eval/webapp/node_modules/dunder-proto/get.js +30 -0
- gaia/eval/webapp/node_modules/dunder-proto/package.json +76 -0
- gaia/eval/webapp/node_modules/dunder-proto/set.d.ts +5 -0
- gaia/eval/webapp/node_modules/dunder-proto/set.js +35 -0
- gaia/eval/webapp/node_modules/dunder-proto/test/get.js +34 -0
- gaia/eval/webapp/node_modules/dunder-proto/test/index.js +4 -0
- gaia/eval/webapp/node_modules/dunder-proto/test/set.js +50 -0
- gaia/eval/webapp/node_modules/dunder-proto/tsconfig.json +9 -0
- gaia/eval/webapp/node_modules/ee-first/LICENSE +22 -0
- gaia/eval/webapp/node_modules/ee-first/README.md +80 -0
- gaia/eval/webapp/node_modules/ee-first/index.js +95 -0
- gaia/eval/webapp/node_modules/ee-first/package.json +29 -0
- gaia/eval/webapp/node_modules/encodeurl/LICENSE +22 -0
- gaia/eval/webapp/node_modules/encodeurl/README.md +109 -0
- gaia/eval/webapp/node_modules/encodeurl/index.js +60 -0
- gaia/eval/webapp/node_modules/encodeurl/package.json +40 -0
- gaia/eval/webapp/node_modules/es-define-property/.eslintrc +13 -0
- gaia/eval/webapp/node_modules/es-define-property/.github/FUNDING.yml +12 -0
- gaia/eval/webapp/node_modules/es-define-property/.nycrc +9 -0
- gaia/eval/webapp/node_modules/es-define-property/CHANGELOG.md +29 -0
- gaia/eval/webapp/node_modules/es-define-property/LICENSE +21 -0
- gaia/eval/webapp/node_modules/es-define-property/README.md +49 -0
- gaia/eval/webapp/node_modules/es-define-property/index.d.ts +3 -0
- gaia/eval/webapp/node_modules/es-define-property/index.js +14 -0
- gaia/eval/webapp/node_modules/es-define-property/package.json +81 -0
- gaia/eval/webapp/node_modules/es-define-property/test/index.js +56 -0
- gaia/eval/webapp/node_modules/es-define-property/tsconfig.json +10 -0
- gaia/eval/webapp/node_modules/es-errors/.eslintrc +5 -0
- gaia/eval/webapp/node_modules/es-errors/.github/FUNDING.yml +12 -0
- gaia/eval/webapp/node_modules/es-errors/CHANGELOG.md +40 -0
- gaia/eval/webapp/node_modules/es-errors/LICENSE +21 -0
- gaia/eval/webapp/node_modules/es-errors/README.md +55 -0
- gaia/eval/webapp/node_modules/es-errors/eval.d.ts +3 -0
- gaia/eval/webapp/node_modules/es-errors/eval.js +4 -0
- gaia/eval/webapp/node_modules/es-errors/index.d.ts +3 -0
- gaia/eval/webapp/node_modules/es-errors/index.js +4 -0
- gaia/eval/webapp/node_modules/es-errors/package.json +80 -0
- gaia/eval/webapp/node_modules/es-errors/range.d.ts +3 -0
- gaia/eval/webapp/node_modules/es-errors/range.js +4 -0
- gaia/eval/webapp/node_modules/es-errors/ref.d.ts +3 -0
- gaia/eval/webapp/node_modules/es-errors/ref.js +4 -0
- gaia/eval/webapp/node_modules/es-errors/syntax.d.ts +3 -0
- gaia/eval/webapp/node_modules/es-errors/syntax.js +4 -0
- gaia/eval/webapp/node_modules/es-errors/test/index.js +19 -0
- gaia/eval/webapp/node_modules/es-errors/tsconfig.json +49 -0
- gaia/eval/webapp/node_modules/es-errors/type.d.ts +3 -0
- gaia/eval/webapp/node_modules/es-errors/type.js +4 -0
- gaia/eval/webapp/node_modules/es-errors/uri.d.ts +3 -0
- gaia/eval/webapp/node_modules/es-errors/uri.js +4 -0
- gaia/eval/webapp/node_modules/es-object-atoms/.eslintrc +16 -0
- gaia/eval/webapp/node_modules/es-object-atoms/.github/FUNDING.yml +12 -0
- gaia/eval/webapp/node_modules/es-object-atoms/CHANGELOG.md +37 -0
- gaia/eval/webapp/node_modules/es-object-atoms/LICENSE +21 -0
- gaia/eval/webapp/node_modules/es-object-atoms/README.md +63 -0
- gaia/eval/webapp/node_modules/es-object-atoms/RequireObjectCoercible.d.ts +3 -0
- gaia/eval/webapp/node_modules/es-object-atoms/RequireObjectCoercible.js +11 -0
- gaia/eval/webapp/node_modules/es-object-atoms/ToObject.d.ts +7 -0
- gaia/eval/webapp/node_modules/es-object-atoms/ToObject.js +10 -0
- gaia/eval/webapp/node_modules/es-object-atoms/index.d.ts +3 -0
- gaia/eval/webapp/node_modules/es-object-atoms/index.js +4 -0
- gaia/eval/webapp/node_modules/es-object-atoms/isObject.d.ts +3 -0
- gaia/eval/webapp/node_modules/es-object-atoms/isObject.js +6 -0
- gaia/eval/webapp/node_modules/es-object-atoms/package.json +80 -0
- gaia/eval/webapp/node_modules/es-object-atoms/test/index.js +38 -0
- gaia/eval/webapp/node_modules/es-object-atoms/tsconfig.json +6 -0
- gaia/eval/webapp/node_modules/escape-html/LICENSE +24 -0
- gaia/eval/webapp/node_modules/escape-html/Readme.md +43 -0
- gaia/eval/webapp/node_modules/escape-html/index.js +78 -0
- gaia/eval/webapp/node_modules/escape-html/package.json +24 -0
- gaia/eval/webapp/node_modules/etag/HISTORY.md +83 -0
- gaia/eval/webapp/node_modules/etag/LICENSE +22 -0
- gaia/eval/webapp/node_modules/etag/README.md +159 -0
- gaia/eval/webapp/node_modules/etag/index.js +131 -0
- gaia/eval/webapp/node_modules/etag/package.json +47 -0
- gaia/eval/webapp/node_modules/express/History.md +3656 -0
- gaia/eval/webapp/node_modules/express/LICENSE +24 -0
- gaia/eval/webapp/node_modules/express/Readme.md +260 -0
- gaia/eval/webapp/node_modules/express/index.js +11 -0
- gaia/eval/webapp/node_modules/express/lib/application.js +661 -0
- gaia/eval/webapp/node_modules/express/lib/express.js +116 -0
- gaia/eval/webapp/node_modules/express/lib/middleware/init.js +43 -0
- gaia/eval/webapp/node_modules/express/lib/middleware/query.js +47 -0
- gaia/eval/webapp/node_modules/express/lib/request.js +525 -0
- gaia/eval/webapp/node_modules/express/lib/response.js +1179 -0
- gaia/eval/webapp/node_modules/express/lib/router/index.js +673 -0
- gaia/eval/webapp/node_modules/express/lib/router/layer.js +181 -0
- gaia/eval/webapp/node_modules/express/lib/router/route.js +230 -0
- gaia/eval/webapp/node_modules/express/lib/utils.js +303 -0
- gaia/eval/webapp/node_modules/express/lib/view.js +182 -0
- gaia/eval/webapp/node_modules/express/package.json +102 -0
- gaia/eval/webapp/node_modules/finalhandler/HISTORY.md +210 -0
- gaia/eval/webapp/node_modules/finalhandler/LICENSE +22 -0
- gaia/eval/webapp/node_modules/finalhandler/README.md +147 -0
- gaia/eval/webapp/node_modules/finalhandler/SECURITY.md +25 -0
- gaia/eval/webapp/node_modules/finalhandler/index.js +341 -0
- gaia/eval/webapp/node_modules/finalhandler/package.json +47 -0
- gaia/eval/webapp/node_modules/forwarded/HISTORY.md +21 -0
- gaia/eval/webapp/node_modules/forwarded/LICENSE +22 -0
- gaia/eval/webapp/node_modules/forwarded/README.md +57 -0
- gaia/eval/webapp/node_modules/forwarded/index.js +90 -0
- gaia/eval/webapp/node_modules/forwarded/package.json +45 -0
- gaia/eval/webapp/node_modules/fresh/HISTORY.md +70 -0
- gaia/eval/webapp/node_modules/fresh/LICENSE +23 -0
- gaia/eval/webapp/node_modules/fresh/README.md +119 -0
- gaia/eval/webapp/node_modules/fresh/index.js +137 -0
- gaia/eval/webapp/node_modules/fresh/package.json +46 -0
- gaia/eval/webapp/node_modules/fs/README.md +9 -0
- gaia/eval/webapp/node_modules/fs/package.json +20 -0
- gaia/eval/webapp/node_modules/function-bind/.eslintrc +21 -0
- gaia/eval/webapp/node_modules/function-bind/.github/FUNDING.yml +12 -0
- gaia/eval/webapp/node_modules/function-bind/.github/SECURITY.md +3 -0
- gaia/eval/webapp/node_modules/function-bind/.nycrc +13 -0
- gaia/eval/webapp/node_modules/function-bind/CHANGELOG.md +136 -0
- gaia/eval/webapp/node_modules/function-bind/LICENSE +20 -0
- gaia/eval/webapp/node_modules/function-bind/README.md +46 -0
- gaia/eval/webapp/node_modules/function-bind/implementation.js +84 -0
- gaia/eval/webapp/node_modules/function-bind/index.js +5 -0
- gaia/eval/webapp/node_modules/function-bind/package.json +87 -0
- gaia/eval/webapp/node_modules/function-bind/test/.eslintrc +9 -0
- gaia/eval/webapp/node_modules/function-bind/test/index.js +252 -0
- gaia/eval/webapp/node_modules/get-intrinsic/.eslintrc +42 -0
- gaia/eval/webapp/node_modules/get-intrinsic/.github/FUNDING.yml +12 -0
- gaia/eval/webapp/node_modules/get-intrinsic/.nycrc +9 -0
- gaia/eval/webapp/node_modules/get-intrinsic/CHANGELOG.md +186 -0
- gaia/eval/webapp/node_modules/get-intrinsic/LICENSE +21 -0
- gaia/eval/webapp/node_modules/get-intrinsic/README.md +71 -0
- gaia/eval/webapp/node_modules/get-intrinsic/index.js +378 -0
- gaia/eval/webapp/node_modules/get-intrinsic/package.json +97 -0
- gaia/eval/webapp/node_modules/get-intrinsic/test/GetIntrinsic.js +274 -0
- gaia/eval/webapp/node_modules/get-proto/.eslintrc +10 -0
- gaia/eval/webapp/node_modules/get-proto/.github/FUNDING.yml +12 -0
- gaia/eval/webapp/node_modules/get-proto/.nycrc +9 -0
- gaia/eval/webapp/node_modules/get-proto/CHANGELOG.md +21 -0
- gaia/eval/webapp/node_modules/get-proto/LICENSE +21 -0
- gaia/eval/webapp/node_modules/get-proto/Object.getPrototypeOf.d.ts +5 -0
- gaia/eval/webapp/node_modules/get-proto/Object.getPrototypeOf.js +6 -0
- gaia/eval/webapp/node_modules/get-proto/README.md +50 -0
- gaia/eval/webapp/node_modules/get-proto/Reflect.getPrototypeOf.d.ts +3 -0
- gaia/eval/webapp/node_modules/get-proto/Reflect.getPrototypeOf.js +4 -0
- gaia/eval/webapp/node_modules/get-proto/index.d.ts +5 -0
- gaia/eval/webapp/node_modules/get-proto/index.js +27 -0
- gaia/eval/webapp/node_modules/get-proto/package.json +81 -0
- gaia/eval/webapp/node_modules/get-proto/test/index.js +68 -0
- gaia/eval/webapp/node_modules/get-proto/tsconfig.json +9 -0
- gaia/eval/webapp/node_modules/gopd/.eslintrc +16 -0
- gaia/eval/webapp/node_modules/gopd/.github/FUNDING.yml +12 -0
- gaia/eval/webapp/node_modules/gopd/CHANGELOG.md +45 -0
- gaia/eval/webapp/node_modules/gopd/LICENSE +21 -0
- gaia/eval/webapp/node_modules/gopd/README.md +40 -0
- gaia/eval/webapp/node_modules/gopd/gOPD.d.ts +1 -0
- gaia/eval/webapp/node_modules/gopd/gOPD.js +4 -0
- gaia/eval/webapp/node_modules/gopd/index.d.ts +5 -0
- gaia/eval/webapp/node_modules/gopd/index.js +15 -0
- gaia/eval/webapp/node_modules/gopd/package.json +77 -0
- gaia/eval/webapp/node_modules/gopd/test/index.js +36 -0
- gaia/eval/webapp/node_modules/gopd/tsconfig.json +9 -0
- gaia/eval/webapp/node_modules/has-symbols/.eslintrc +11 -0
- gaia/eval/webapp/node_modules/has-symbols/.github/FUNDING.yml +12 -0
- gaia/eval/webapp/node_modules/has-symbols/.nycrc +9 -0
- gaia/eval/webapp/node_modules/has-symbols/CHANGELOG.md +91 -0
- gaia/eval/webapp/node_modules/has-symbols/LICENSE +21 -0
- gaia/eval/webapp/node_modules/has-symbols/README.md +46 -0
- gaia/eval/webapp/node_modules/has-symbols/index.d.ts +3 -0
- gaia/eval/webapp/node_modules/has-symbols/index.js +14 -0
- gaia/eval/webapp/node_modules/has-symbols/package.json +111 -0
- gaia/eval/webapp/node_modules/has-symbols/shams.d.ts +3 -0
- gaia/eval/webapp/node_modules/has-symbols/shams.js +45 -0
- gaia/eval/webapp/node_modules/has-symbols/test/index.js +22 -0
- gaia/eval/webapp/node_modules/has-symbols/test/shams/core-js.js +29 -0
- gaia/eval/webapp/node_modules/has-symbols/test/shams/get-own-property-symbols.js +29 -0
- gaia/eval/webapp/node_modules/has-symbols/test/tests.js +58 -0
- gaia/eval/webapp/node_modules/has-symbols/tsconfig.json +10 -0
- gaia/eval/webapp/node_modules/hasown/.eslintrc +5 -0
- gaia/eval/webapp/node_modules/hasown/.github/FUNDING.yml +12 -0
- gaia/eval/webapp/node_modules/hasown/.nycrc +13 -0
- gaia/eval/webapp/node_modules/hasown/CHANGELOG.md +40 -0
- gaia/eval/webapp/node_modules/hasown/LICENSE +21 -0
- gaia/eval/webapp/node_modules/hasown/README.md +40 -0
- gaia/eval/webapp/node_modules/hasown/index.d.ts +3 -0
- gaia/eval/webapp/node_modules/hasown/index.js +8 -0
- gaia/eval/webapp/node_modules/hasown/package.json +92 -0
- gaia/eval/webapp/node_modules/hasown/tsconfig.json +6 -0
- gaia/eval/webapp/node_modules/http-errors/HISTORY.md +180 -0
- gaia/eval/webapp/node_modules/http-errors/LICENSE +23 -0
- gaia/eval/webapp/node_modules/http-errors/README.md +169 -0
- gaia/eval/webapp/node_modules/http-errors/index.js +289 -0
- gaia/eval/webapp/node_modules/http-errors/package.json +50 -0
- gaia/eval/webapp/node_modules/iconv-lite/Changelog.md +162 -0
- gaia/eval/webapp/node_modules/iconv-lite/LICENSE +21 -0
- gaia/eval/webapp/node_modules/iconv-lite/README.md +156 -0
- gaia/eval/webapp/node_modules/iconv-lite/encodings/dbcs-codec.js +555 -0
- gaia/eval/webapp/node_modules/iconv-lite/encodings/dbcs-data.js +176 -0
- gaia/eval/webapp/node_modules/iconv-lite/encodings/index.js +22 -0
- gaia/eval/webapp/node_modules/iconv-lite/encodings/internal.js +188 -0
- gaia/eval/webapp/node_modules/iconv-lite/encodings/sbcs-codec.js +72 -0
- gaia/eval/webapp/node_modules/iconv-lite/encodings/sbcs-data-generated.js +451 -0
- gaia/eval/webapp/node_modules/iconv-lite/encodings/sbcs-data.js +174 -0
- gaia/eval/webapp/node_modules/iconv-lite/encodings/tables/big5-added.json +122 -0
- gaia/eval/webapp/node_modules/iconv-lite/encodings/tables/cp936.json +264 -0
- gaia/eval/webapp/node_modules/iconv-lite/encodings/tables/cp949.json +273 -0
- gaia/eval/webapp/node_modules/iconv-lite/encodings/tables/cp950.json +177 -0
- gaia/eval/webapp/node_modules/iconv-lite/encodings/tables/eucjp.json +182 -0
- gaia/eval/webapp/node_modules/iconv-lite/encodings/tables/gb18030-ranges.json +1 -0
- gaia/eval/webapp/node_modules/iconv-lite/encodings/tables/gbk-added.json +55 -0
- gaia/eval/webapp/node_modules/iconv-lite/encodings/tables/shiftjis.json +125 -0
- gaia/eval/webapp/node_modules/iconv-lite/encodings/utf16.js +177 -0
- gaia/eval/webapp/node_modules/iconv-lite/encodings/utf7.js +290 -0
- gaia/eval/webapp/node_modules/iconv-lite/lib/bom-handling.js +52 -0
- gaia/eval/webapp/node_modules/iconv-lite/lib/extend-node.js +217 -0
- gaia/eval/webapp/node_modules/iconv-lite/lib/index.d.ts +24 -0
- gaia/eval/webapp/node_modules/iconv-lite/lib/index.js +153 -0
- gaia/eval/webapp/node_modules/iconv-lite/lib/streams.js +121 -0
- gaia/eval/webapp/node_modules/iconv-lite/package.json +46 -0
- gaia/eval/webapp/node_modules/inherits/LICENSE +16 -0
- gaia/eval/webapp/node_modules/inherits/README.md +42 -0
- gaia/eval/webapp/node_modules/inherits/inherits.js +9 -0
- gaia/eval/webapp/node_modules/inherits/inherits_browser.js +27 -0
- gaia/eval/webapp/node_modules/inherits/package.json +29 -0
- gaia/eval/webapp/node_modules/ipaddr.js/LICENSE +19 -0
- gaia/eval/webapp/node_modules/ipaddr.js/README.md +233 -0
- gaia/eval/webapp/node_modules/ipaddr.js/ipaddr.min.js +1 -0
- gaia/eval/webapp/node_modules/ipaddr.js/lib/ipaddr.js +673 -0
- gaia/eval/webapp/node_modules/ipaddr.js/lib/ipaddr.js.d.ts +68 -0
- gaia/eval/webapp/node_modules/ipaddr.js/package.json +35 -0
- gaia/eval/webapp/node_modules/math-intrinsics/.eslintrc +16 -0
- gaia/eval/webapp/node_modules/math-intrinsics/.github/FUNDING.yml +12 -0
- gaia/eval/webapp/node_modules/math-intrinsics/CHANGELOG.md +24 -0
- gaia/eval/webapp/node_modules/math-intrinsics/LICENSE +21 -0
- gaia/eval/webapp/node_modules/math-intrinsics/README.md +50 -0
- gaia/eval/webapp/node_modules/math-intrinsics/abs.d.ts +1 -0
- gaia/eval/webapp/node_modules/math-intrinsics/abs.js +4 -0
- gaia/eval/webapp/node_modules/math-intrinsics/constants/maxArrayLength.d.ts +3 -0
- gaia/eval/webapp/node_modules/math-intrinsics/constants/maxArrayLength.js +4 -0
- gaia/eval/webapp/node_modules/math-intrinsics/constants/maxSafeInteger.d.ts +3 -0
- gaia/eval/webapp/node_modules/math-intrinsics/constants/maxSafeInteger.js +5 -0
- gaia/eval/webapp/node_modules/math-intrinsics/constants/maxValue.d.ts +3 -0
- gaia/eval/webapp/node_modules/math-intrinsics/constants/maxValue.js +5 -0
- gaia/eval/webapp/node_modules/math-intrinsics/floor.d.ts +1 -0
- gaia/eval/webapp/node_modules/math-intrinsics/floor.js +4 -0
- gaia/eval/webapp/node_modules/math-intrinsics/isFinite.d.ts +3 -0
- gaia/eval/webapp/node_modules/math-intrinsics/isFinite.js +12 -0
- gaia/eval/webapp/node_modules/math-intrinsics/isInteger.d.ts +3 -0
- gaia/eval/webapp/node_modules/math-intrinsics/isInteger.js +16 -0
- gaia/eval/webapp/node_modules/math-intrinsics/isNaN.d.ts +1 -0
- gaia/eval/webapp/node_modules/math-intrinsics/isNaN.js +6 -0
- gaia/eval/webapp/node_modules/math-intrinsics/isNegativeZero.d.ts +3 -0
- gaia/eval/webapp/node_modules/math-intrinsics/isNegativeZero.js +6 -0
- gaia/eval/webapp/node_modules/math-intrinsics/max.d.ts +1 -0
- gaia/eval/webapp/node_modules/math-intrinsics/max.js +4 -0
- gaia/eval/webapp/node_modules/math-intrinsics/min.d.ts +1 -0
- gaia/eval/webapp/node_modules/math-intrinsics/min.js +4 -0
- gaia/eval/webapp/node_modules/math-intrinsics/mod.d.ts +3 -0
- gaia/eval/webapp/node_modules/math-intrinsics/mod.js +9 -0
- gaia/eval/webapp/node_modules/math-intrinsics/package.json +86 -0
- gaia/eval/webapp/node_modules/math-intrinsics/pow.d.ts +1 -0
- gaia/eval/webapp/node_modules/math-intrinsics/pow.js +4 -0
- gaia/eval/webapp/node_modules/math-intrinsics/round.d.ts +1 -0
- gaia/eval/webapp/node_modules/math-intrinsics/round.js +4 -0
- gaia/eval/webapp/node_modules/math-intrinsics/sign.d.ts +3 -0
- gaia/eval/webapp/node_modules/math-intrinsics/sign.js +11 -0
- gaia/eval/webapp/node_modules/math-intrinsics/test/index.js +192 -0
- gaia/eval/webapp/node_modules/math-intrinsics/tsconfig.json +3 -0
- gaia/eval/webapp/node_modules/media-typer/HISTORY.md +22 -0
- gaia/eval/webapp/node_modules/media-typer/LICENSE +22 -0
- gaia/eval/webapp/node_modules/media-typer/README.md +81 -0
- gaia/eval/webapp/node_modules/media-typer/index.js +270 -0
- gaia/eval/webapp/node_modules/media-typer/package.json +26 -0
- gaia/eval/webapp/node_modules/merge-descriptors/HISTORY.md +21 -0
- gaia/eval/webapp/node_modules/merge-descriptors/LICENSE +23 -0
- gaia/eval/webapp/node_modules/merge-descriptors/README.md +49 -0
- gaia/eval/webapp/node_modules/merge-descriptors/index.js +60 -0
- gaia/eval/webapp/node_modules/merge-descriptors/package.json +39 -0
- gaia/eval/webapp/node_modules/methods/HISTORY.md +29 -0
- gaia/eval/webapp/node_modules/methods/LICENSE +24 -0
- gaia/eval/webapp/node_modules/methods/README.md +51 -0
- gaia/eval/webapp/node_modules/methods/index.js +69 -0
- gaia/eval/webapp/node_modules/methods/package.json +36 -0
- gaia/eval/webapp/node_modules/mime/.npmignore +0 -0
- gaia/eval/webapp/node_modules/mime/CHANGELOG.md +164 -0
- gaia/eval/webapp/node_modules/mime/LICENSE +21 -0
- gaia/eval/webapp/node_modules/mime/README.md +90 -0
- gaia/eval/webapp/node_modules/mime/cli.js +8 -0
- gaia/eval/webapp/node_modules/mime/mime.js +108 -0
- gaia/eval/webapp/node_modules/mime/package.json +44 -0
- gaia/eval/webapp/node_modules/mime/src/build.js +53 -0
- gaia/eval/webapp/node_modules/mime/src/test.js +60 -0
- gaia/eval/webapp/node_modules/mime/types.json +1 -0
- gaia/eval/webapp/node_modules/mime-db/HISTORY.md +507 -0
- gaia/eval/webapp/node_modules/mime-db/LICENSE +23 -0
- gaia/eval/webapp/node_modules/mime-db/README.md +100 -0
- gaia/eval/webapp/node_modules/mime-db/db.json +8519 -0
- gaia/eval/webapp/node_modules/mime-db/index.js +12 -0
- gaia/eval/webapp/node_modules/mime-db/package.json +60 -0
- gaia/eval/webapp/node_modules/mime-types/HISTORY.md +397 -0
- gaia/eval/webapp/node_modules/mime-types/LICENSE +23 -0
- gaia/eval/webapp/node_modules/mime-types/README.md +113 -0
- gaia/eval/webapp/node_modules/mime-types/index.js +188 -0
- gaia/eval/webapp/node_modules/mime-types/package.json +44 -0
- gaia/eval/webapp/node_modules/ms/index.js +152 -0
- gaia/eval/webapp/node_modules/ms/license.md +21 -0
- gaia/eval/webapp/node_modules/ms/package.json +37 -0
- gaia/eval/webapp/node_modules/ms/readme.md +51 -0
- gaia/eval/webapp/node_modules/negotiator/HISTORY.md +108 -0
- gaia/eval/webapp/node_modules/negotiator/LICENSE +24 -0
- gaia/eval/webapp/node_modules/negotiator/README.md +203 -0
- gaia/eval/webapp/node_modules/negotiator/index.js +82 -0
- gaia/eval/webapp/node_modules/negotiator/lib/charset.js +169 -0
- gaia/eval/webapp/node_modules/negotiator/lib/encoding.js +184 -0
- gaia/eval/webapp/node_modules/negotiator/lib/language.js +179 -0
- gaia/eval/webapp/node_modules/negotiator/lib/mediaType.js +294 -0
- gaia/eval/webapp/node_modules/negotiator/package.json +42 -0
- gaia/eval/webapp/node_modules/object-inspect/.eslintrc +53 -0
- gaia/eval/webapp/node_modules/object-inspect/.github/FUNDING.yml +12 -0
- gaia/eval/webapp/node_modules/object-inspect/.nycrc +13 -0
- gaia/eval/webapp/node_modules/object-inspect/CHANGELOG.md +424 -0
- gaia/eval/webapp/node_modules/object-inspect/LICENSE +21 -0
- gaia/eval/webapp/node_modules/object-inspect/example/all.js +23 -0
- gaia/eval/webapp/node_modules/object-inspect/example/circular.js +6 -0
- gaia/eval/webapp/node_modules/object-inspect/example/fn.js +5 -0
- gaia/eval/webapp/node_modules/object-inspect/example/inspect.js +10 -0
- gaia/eval/webapp/node_modules/object-inspect/index.js +544 -0
- gaia/eval/webapp/node_modules/object-inspect/package-support.json +20 -0
- gaia/eval/webapp/node_modules/object-inspect/package.json +105 -0
- gaia/eval/webapp/node_modules/object-inspect/readme.markdown +84 -0
- gaia/eval/webapp/node_modules/object-inspect/test/bigint.js +58 -0
- gaia/eval/webapp/node_modules/object-inspect/test/browser/dom.js +15 -0
- gaia/eval/webapp/node_modules/object-inspect/test/circular.js +16 -0
- gaia/eval/webapp/node_modules/object-inspect/test/deep.js +12 -0
- gaia/eval/webapp/node_modules/object-inspect/test/element.js +53 -0
- gaia/eval/webapp/node_modules/object-inspect/test/err.js +48 -0
- gaia/eval/webapp/node_modules/object-inspect/test/fakes.js +29 -0
- gaia/eval/webapp/node_modules/object-inspect/test/fn.js +76 -0
- gaia/eval/webapp/node_modules/object-inspect/test/global.js +17 -0
- gaia/eval/webapp/node_modules/object-inspect/test/has.js +15 -0
- gaia/eval/webapp/node_modules/object-inspect/test/holes.js +15 -0
- gaia/eval/webapp/node_modules/object-inspect/test/indent-option.js +271 -0
- gaia/eval/webapp/node_modules/object-inspect/test/inspect.js +139 -0
- gaia/eval/webapp/node_modules/object-inspect/test/lowbyte.js +12 -0
- gaia/eval/webapp/node_modules/object-inspect/test/number.js +58 -0
- gaia/eval/webapp/node_modules/object-inspect/test/quoteStyle.js +26 -0
- gaia/eval/webapp/node_modules/object-inspect/test/toStringTag.js +40 -0
- gaia/eval/webapp/node_modules/object-inspect/test/undef.js +12 -0
- gaia/eval/webapp/node_modules/object-inspect/test/values.js +261 -0
- gaia/eval/webapp/node_modules/object-inspect/test-core-js.js +26 -0
- gaia/eval/webapp/node_modules/object-inspect/util.inspect.js +1 -0
- gaia/eval/webapp/node_modules/on-finished/HISTORY.md +98 -0
- gaia/eval/webapp/node_modules/on-finished/LICENSE +23 -0
- gaia/eval/webapp/node_modules/on-finished/README.md +162 -0
- gaia/eval/webapp/node_modules/on-finished/index.js +234 -0
- gaia/eval/webapp/node_modules/on-finished/package.json +39 -0
- gaia/eval/webapp/node_modules/parseurl/HISTORY.md +58 -0
- gaia/eval/webapp/node_modules/parseurl/LICENSE +24 -0
- gaia/eval/webapp/node_modules/parseurl/README.md +133 -0
- gaia/eval/webapp/node_modules/parseurl/index.js +158 -0
- gaia/eval/webapp/node_modules/parseurl/package.json +40 -0
- gaia/eval/webapp/node_modules/path/.npmignore +1 -0
- gaia/eval/webapp/node_modules/path/LICENSE +18 -0
- gaia/eval/webapp/node_modules/path/README.md +15 -0
- gaia/eval/webapp/node_modules/path/package.json +24 -0
- gaia/eval/webapp/node_modules/path/path.js +628 -0
- gaia/eval/webapp/node_modules/path-to-regexp/LICENSE +21 -0
- gaia/eval/webapp/node_modules/path-to-regexp/Readme.md +35 -0
- gaia/eval/webapp/node_modules/path-to-regexp/index.js +156 -0
- gaia/eval/webapp/node_modules/path-to-regexp/package.json +30 -0
- gaia/eval/webapp/node_modules/process/.eslintrc +21 -0
- gaia/eval/webapp/node_modules/process/LICENSE +22 -0
- gaia/eval/webapp/node_modules/process/README.md +26 -0
- gaia/eval/webapp/node_modules/process/browser.js +184 -0
- gaia/eval/webapp/node_modules/process/index.js +2 -0
- gaia/eval/webapp/node_modules/process/package.json +27 -0
- gaia/eval/webapp/node_modules/process/test.js +199 -0
- gaia/eval/webapp/node_modules/proxy-addr/HISTORY.md +161 -0
- gaia/eval/webapp/node_modules/proxy-addr/LICENSE +22 -0
- gaia/eval/webapp/node_modules/proxy-addr/README.md +139 -0
- gaia/eval/webapp/node_modules/proxy-addr/index.js +327 -0
- gaia/eval/webapp/node_modules/proxy-addr/package.json +47 -0
- gaia/eval/webapp/node_modules/qs/.editorconfig +46 -0
- gaia/eval/webapp/node_modules/qs/.eslintrc +38 -0
- gaia/eval/webapp/node_modules/qs/.github/FUNDING.yml +12 -0
- gaia/eval/webapp/node_modules/qs/.nycrc +13 -0
- gaia/eval/webapp/node_modules/qs/CHANGELOG.md +600 -0
- gaia/eval/webapp/node_modules/qs/LICENSE.md +29 -0
- gaia/eval/webapp/node_modules/qs/README.md +709 -0
- gaia/eval/webapp/node_modules/qs/dist/qs.js +90 -0
- gaia/eval/webapp/node_modules/qs/lib/formats.js +23 -0
- gaia/eval/webapp/node_modules/qs/lib/index.js +11 -0
- gaia/eval/webapp/node_modules/qs/lib/parse.js +296 -0
- gaia/eval/webapp/node_modules/qs/lib/stringify.js +351 -0
- gaia/eval/webapp/node_modules/qs/lib/utils.js +265 -0
- gaia/eval/webapp/node_modules/qs/package.json +91 -0
- gaia/eval/webapp/node_modules/qs/test/empty-keys-cases.js +267 -0
- gaia/eval/webapp/node_modules/qs/test/parse.js +1170 -0
- gaia/eval/webapp/node_modules/qs/test/stringify.js +1298 -0
- gaia/eval/webapp/node_modules/qs/test/utils.js +136 -0
- gaia/eval/webapp/node_modules/range-parser/HISTORY.md +56 -0
- gaia/eval/webapp/node_modules/range-parser/LICENSE +23 -0
- gaia/eval/webapp/node_modules/range-parser/README.md +84 -0
- gaia/eval/webapp/node_modules/range-parser/index.js +162 -0
- gaia/eval/webapp/node_modules/range-parser/package.json +44 -0
- gaia/eval/webapp/node_modules/raw-body/HISTORY.md +308 -0
- gaia/eval/webapp/node_modules/raw-body/LICENSE +22 -0
- gaia/eval/webapp/node_modules/raw-body/README.md +223 -0
- gaia/eval/webapp/node_modules/raw-body/SECURITY.md +24 -0
- gaia/eval/webapp/node_modules/raw-body/index.d.ts +87 -0
- gaia/eval/webapp/node_modules/raw-body/index.js +336 -0
- gaia/eval/webapp/node_modules/raw-body/package.json +49 -0
- gaia/eval/webapp/node_modules/safe-buffer/LICENSE +21 -0
- gaia/eval/webapp/node_modules/safe-buffer/README.md +584 -0
- gaia/eval/webapp/node_modules/safe-buffer/index.d.ts +187 -0
- gaia/eval/webapp/node_modules/safe-buffer/index.js +65 -0
- gaia/eval/webapp/node_modules/safe-buffer/package.json +51 -0
- gaia/eval/webapp/node_modules/safer-buffer/LICENSE +21 -0
- gaia/eval/webapp/node_modules/safer-buffer/Porting-Buffer.md +268 -0
- gaia/eval/webapp/node_modules/safer-buffer/Readme.md +156 -0
- gaia/eval/webapp/node_modules/safer-buffer/dangerous.js +58 -0
- gaia/eval/webapp/node_modules/safer-buffer/package.json +34 -0
- gaia/eval/webapp/node_modules/safer-buffer/safer.js +77 -0
- gaia/eval/webapp/node_modules/safer-buffer/tests.js +406 -0
- gaia/eval/webapp/node_modules/send/HISTORY.md +526 -0
- gaia/eval/webapp/node_modules/send/LICENSE +23 -0
- gaia/eval/webapp/node_modules/send/README.md +327 -0
- gaia/eval/webapp/node_modules/send/SECURITY.md +24 -0
- gaia/eval/webapp/node_modules/send/index.js +1142 -0
- gaia/eval/webapp/node_modules/send/node_modules/encodeurl/HISTORY.md +14 -0
- gaia/eval/webapp/node_modules/send/node_modules/encodeurl/LICENSE +22 -0
- gaia/eval/webapp/node_modules/send/node_modules/encodeurl/README.md +128 -0
- gaia/eval/webapp/node_modules/send/node_modules/encodeurl/index.js +60 -0
- gaia/eval/webapp/node_modules/send/node_modules/encodeurl/package.json +40 -0
- gaia/eval/webapp/node_modules/send/node_modules/ms/index.js +162 -0
- gaia/eval/webapp/node_modules/send/node_modules/ms/license.md +21 -0
- gaia/eval/webapp/node_modules/send/node_modules/ms/package.json +38 -0
- gaia/eval/webapp/node_modules/send/node_modules/ms/readme.md +59 -0
- gaia/eval/webapp/node_modules/send/package.json +62 -0
- gaia/eval/webapp/node_modules/serve-static/HISTORY.md +487 -0
- gaia/eval/webapp/node_modules/serve-static/LICENSE +25 -0
- gaia/eval/webapp/node_modules/serve-static/README.md +257 -0
- gaia/eval/webapp/node_modules/serve-static/index.js +209 -0
- gaia/eval/webapp/node_modules/serve-static/package.json +42 -0
- gaia/eval/webapp/node_modules/setprototypeof/LICENSE +13 -0
- gaia/eval/webapp/node_modules/setprototypeof/README.md +31 -0
- gaia/eval/webapp/node_modules/setprototypeof/index.d.ts +2 -0
- gaia/eval/webapp/node_modules/setprototypeof/index.js +17 -0
- gaia/eval/webapp/node_modules/setprototypeof/package.json +38 -0
- gaia/eval/webapp/node_modules/setprototypeof/test/index.js +24 -0
- gaia/eval/webapp/node_modules/side-channel/.editorconfig +9 -0
- gaia/eval/webapp/node_modules/side-channel/.eslintrc +12 -0
- gaia/eval/webapp/node_modules/side-channel/.github/FUNDING.yml +12 -0
- gaia/eval/webapp/node_modules/side-channel/.nycrc +13 -0
- gaia/eval/webapp/node_modules/side-channel/CHANGELOG.md +110 -0
- gaia/eval/webapp/node_modules/side-channel/LICENSE +21 -0
- gaia/eval/webapp/node_modules/side-channel/README.md +61 -0
- gaia/eval/webapp/node_modules/side-channel/index.d.ts +14 -0
- gaia/eval/webapp/node_modules/side-channel/index.js +43 -0
- gaia/eval/webapp/node_modules/side-channel/package.json +85 -0
- gaia/eval/webapp/node_modules/side-channel/test/index.js +104 -0
- gaia/eval/webapp/node_modules/side-channel/tsconfig.json +9 -0
- gaia/eval/webapp/node_modules/side-channel-list/.editorconfig +9 -0
- gaia/eval/webapp/node_modules/side-channel-list/.eslintrc +11 -0
- gaia/eval/webapp/node_modules/side-channel-list/.github/FUNDING.yml +12 -0
- gaia/eval/webapp/node_modules/side-channel-list/.nycrc +13 -0
- gaia/eval/webapp/node_modules/side-channel-list/CHANGELOG.md +15 -0
- gaia/eval/webapp/node_modules/side-channel-list/LICENSE +21 -0
- gaia/eval/webapp/node_modules/side-channel-list/README.md +62 -0
- gaia/eval/webapp/node_modules/side-channel-list/index.d.ts +13 -0
- gaia/eval/webapp/node_modules/side-channel-list/index.js +113 -0
- gaia/eval/webapp/node_modules/side-channel-list/list.d.ts +14 -0
- gaia/eval/webapp/node_modules/side-channel-list/package.json +77 -0
- gaia/eval/webapp/node_modules/side-channel-list/test/index.js +104 -0
- gaia/eval/webapp/node_modules/side-channel-list/tsconfig.json +9 -0
- gaia/eval/webapp/node_modules/side-channel-map/.editorconfig +9 -0
- gaia/eval/webapp/node_modules/side-channel-map/.eslintrc +11 -0
- gaia/eval/webapp/node_modules/side-channel-map/.github/FUNDING.yml +12 -0
- gaia/eval/webapp/node_modules/side-channel-map/.nycrc +13 -0
- gaia/eval/webapp/node_modules/side-channel-map/CHANGELOG.md +22 -0
- gaia/eval/webapp/node_modules/side-channel-map/LICENSE +21 -0
- gaia/eval/webapp/node_modules/side-channel-map/README.md +62 -0
- gaia/eval/webapp/node_modules/side-channel-map/index.d.ts +15 -0
- gaia/eval/webapp/node_modules/side-channel-map/index.js +68 -0
- gaia/eval/webapp/node_modules/side-channel-map/package.json +80 -0
- gaia/eval/webapp/node_modules/side-channel-map/test/index.js +114 -0
- gaia/eval/webapp/node_modules/side-channel-map/tsconfig.json +9 -0
- gaia/eval/webapp/node_modules/side-channel-weakmap/.editorconfig +9 -0
- gaia/eval/webapp/node_modules/side-channel-weakmap/.eslintrc +12 -0
- gaia/eval/webapp/node_modules/side-channel-weakmap/.github/FUNDING.yml +12 -0
- gaia/eval/webapp/node_modules/side-channel-weakmap/.nycrc +13 -0
- gaia/eval/webapp/node_modules/side-channel-weakmap/CHANGELOG.md +28 -0
- gaia/eval/webapp/node_modules/side-channel-weakmap/LICENSE +21 -0
- gaia/eval/webapp/node_modules/side-channel-weakmap/README.md +62 -0
- gaia/eval/webapp/node_modules/side-channel-weakmap/index.d.ts +15 -0
- gaia/eval/webapp/node_modules/side-channel-weakmap/index.js +84 -0
- gaia/eval/webapp/node_modules/side-channel-weakmap/package.json +87 -0
- gaia/eval/webapp/node_modules/side-channel-weakmap/test/index.js +114 -0
- gaia/eval/webapp/node_modules/side-channel-weakmap/tsconfig.json +9 -0
- gaia/eval/webapp/node_modules/statuses/HISTORY.md +82 -0
- gaia/eval/webapp/node_modules/statuses/LICENSE +23 -0
- gaia/eval/webapp/node_modules/statuses/README.md +136 -0
- gaia/eval/webapp/node_modules/statuses/codes.json +65 -0
- gaia/eval/webapp/node_modules/statuses/index.js +146 -0
- gaia/eval/webapp/node_modules/statuses/package.json +49 -0
- gaia/eval/webapp/node_modules/toidentifier/HISTORY.md +9 -0
- gaia/eval/webapp/node_modules/toidentifier/LICENSE +21 -0
- gaia/eval/webapp/node_modules/toidentifier/README.md +61 -0
- gaia/eval/webapp/node_modules/toidentifier/index.js +32 -0
- gaia/eval/webapp/node_modules/toidentifier/package.json +38 -0
- gaia/eval/webapp/node_modules/type-is/HISTORY.md +259 -0
- gaia/eval/webapp/node_modules/type-is/LICENSE +23 -0
- gaia/eval/webapp/node_modules/type-is/README.md +170 -0
- gaia/eval/webapp/node_modules/type-is/index.js +266 -0
- gaia/eval/webapp/node_modules/type-is/package.json +45 -0
- gaia/eval/webapp/node_modules/unpipe/HISTORY.md +4 -0
- gaia/eval/webapp/node_modules/unpipe/LICENSE +22 -0
- gaia/eval/webapp/node_modules/unpipe/README.md +43 -0
- gaia/eval/webapp/node_modules/unpipe/index.js +69 -0
- gaia/eval/webapp/node_modules/unpipe/package.json +27 -0
- gaia/eval/webapp/node_modules/util/LICENSE +18 -0
- gaia/eval/webapp/node_modules/util/README.md +15 -0
- gaia/eval/webapp/node_modules/util/node_modules/inherits/LICENSE +16 -0
- gaia/eval/webapp/node_modules/util/node_modules/inherits/README.md +42 -0
- gaia/eval/webapp/node_modules/util/node_modules/inherits/inherits.js +7 -0
- gaia/eval/webapp/node_modules/util/node_modules/inherits/inherits_browser.js +23 -0
- gaia/eval/webapp/node_modules/util/node_modules/inherits/package.json +29 -0
- gaia/eval/webapp/node_modules/util/package.json +35 -0
- gaia/eval/webapp/node_modules/util/support/isBuffer.js +3 -0
- gaia/eval/webapp/node_modules/util/support/isBufferBrowser.js +6 -0
- gaia/eval/webapp/node_modules/util/util.js +586 -0
- gaia/eval/webapp/node_modules/utils-merge/.npmignore +9 -0
- gaia/eval/webapp/node_modules/utils-merge/LICENSE +20 -0
- gaia/eval/webapp/node_modules/utils-merge/README.md +34 -0
- gaia/eval/webapp/node_modules/utils-merge/index.js +23 -0
- gaia/eval/webapp/node_modules/utils-merge/package.json +40 -0
- gaia/eval/webapp/node_modules/vary/HISTORY.md +39 -0
- gaia/eval/webapp/node_modules/vary/LICENSE +22 -0
- gaia/eval/webapp/node_modules/vary/README.md +101 -0
- gaia/eval/webapp/node_modules/vary/index.js +149 -0
- gaia/eval/webapp/node_modules/vary/package.json +43 -0
- gaia/eval/webapp/package-lock.json +875 -0
- gaia/eval/webapp/package.json +21 -0
- gaia/eval/webapp/public/app.js +3403 -0
- gaia/eval/webapp/public/index.html +88 -0
- gaia/eval/webapp/public/styles.css +3661 -0
- gaia/eval/webapp/server.js +416 -0
- gaia/eval/webapp/test-setup.js +73 -0
- gaia/llm/__init__.py +2 -0
- gaia/llm/lemonade_client.py +3083 -0
- gaia/llm/lemonade_manager.py +269 -0
- gaia/llm/llm_client.py +729 -0
- gaia/llm/vlm_client.py +307 -0
- gaia/logger.py +189 -0
- gaia/mcp/agent_mcp_server.py +245 -0
- gaia/mcp/blender_mcp_client.py +138 -0
- gaia/mcp/blender_mcp_server.py +648 -0
- gaia/mcp/context7_cache.py +332 -0
- gaia/mcp/external_services.py +518 -0
- gaia/mcp/mcp_bridge.py +550 -0
- gaia/mcp/servers/__init__.py +6 -0
- gaia/mcp/servers/docker_mcp.py +83 -0
- gaia/rag/__init__.py +10 -0
- gaia/rag/app.py +293 -0
- gaia/rag/demo.py +304 -0
- gaia/rag/pdf_utils.py +235 -0
- gaia/rag/sdk.py +2194 -0
- gaia/security.py +163 -0
- gaia/talk/app.py +289 -0
- gaia/talk/sdk.py +538 -0
- gaia/util.py +46 -0
- gaia/version.py +100 -0
|
@@ -0,0 +1,582 @@
|
|
|
1
|
+
# Copyright(C) 2024-2025 Advanced Micro Devices, Inc. All rights reserved.
|
|
2
|
+
# SPDX-License-Identifier: MIT
|
|
3
|
+
|
|
4
|
+
import argparse
|
|
5
|
+
import json
|
|
6
|
+
from datetime import datetime
|
|
7
|
+
from pathlib import Path
|
|
8
|
+
|
|
9
|
+
from gaia.eval.claude import ClaudeClient
|
|
10
|
+
from gaia.eval.config import DEFAULT_CLAUDE_MODEL
|
|
11
|
+
from gaia.logger import get_logger
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
class TranscriptGenerator:
|
|
15
|
+
"""Generates example meeting transcripts for testing transcript summarization."""
|
|
16
|
+
|
|
17
|
+
def __init__(self, claude_model=None, max_tokens=8192):
|
|
18
|
+
self.log = get_logger(__name__)
|
|
19
|
+
|
|
20
|
+
# Initialize Claude client for dynamic content generation
|
|
21
|
+
if claude_model is None:
|
|
22
|
+
claude_model = DEFAULT_CLAUDE_MODEL
|
|
23
|
+
try:
|
|
24
|
+
self.claude_client = ClaudeClient(model=claude_model, max_tokens=max_tokens)
|
|
25
|
+
self.log.info(f"Initialized Claude client with model: {claude_model}")
|
|
26
|
+
except Exception as e:
|
|
27
|
+
self.log.error(f"Failed to initialize Claude client: {e}")
|
|
28
|
+
raise ValueError(
|
|
29
|
+
f"Could not initialize Claude client. Please ensure ANTHROPIC_API_KEY is set. Error: {e}"
|
|
30
|
+
)
|
|
31
|
+
|
|
32
|
+
# Meeting templates with different use cases
|
|
33
|
+
self.meeting_templates = {
|
|
34
|
+
"standup": {
|
|
35
|
+
"description": "Daily team standup meeting with status updates and blockers",
|
|
36
|
+
"participants": [
|
|
37
|
+
"Alice Chen (Scrum Master)",
|
|
38
|
+
"Bob Martinez (Developer)",
|
|
39
|
+
"Carol Kim (Developer)",
|
|
40
|
+
"David Wilson (QA Engineer)",
|
|
41
|
+
],
|
|
42
|
+
"duration_minutes": 15,
|
|
43
|
+
"context": "A software development team's daily standup meeting where team members share their progress, current tasks, and any blockers they're facing.",
|
|
44
|
+
},
|
|
45
|
+
"planning": {
|
|
46
|
+
"description": "Sprint planning meeting for upcoming development cycle",
|
|
47
|
+
"participants": [
|
|
48
|
+
"Sarah Johnson (Product Owner)",
|
|
49
|
+
"Mike Thompson (Scrum Master)",
|
|
50
|
+
"Lisa Wang (Senior Developer)",
|
|
51
|
+
"Tom Rodriguez (Developer)",
|
|
52
|
+
"Emma Davis (UX Designer)",
|
|
53
|
+
],
|
|
54
|
+
"duration_minutes": 60,
|
|
55
|
+
"context": "A sprint planning session where the team reviews the product backlog, estimates story points, and commits to work for the upcoming sprint.",
|
|
56
|
+
},
|
|
57
|
+
"client_call": {
|
|
58
|
+
"description": "Client requirements gathering and project discussion",
|
|
59
|
+
"participants": [
|
|
60
|
+
"Jennifer Adams (Account Manager)",
|
|
61
|
+
"Robert Smith (Client - CTO)",
|
|
62
|
+
"Maria Garcia (Client - Product Manager)",
|
|
63
|
+
"Alex Brown (Technical Lead)",
|
|
64
|
+
],
|
|
65
|
+
"duration_minutes": 45,
|
|
66
|
+
"context": "A client meeting to discuss project requirements, gather feedback, and align on technical solutions and timeline.",
|
|
67
|
+
},
|
|
68
|
+
"design_review": {
|
|
69
|
+
"description": "Technical design review for new system architecture",
|
|
70
|
+
"participants": [
|
|
71
|
+
"Dr. Kevin Liu (Principal Architect)",
|
|
72
|
+
"Priya Patel (Senior Developer)",
|
|
73
|
+
"James Miller (DevOps Engineer)",
|
|
74
|
+
"Sophie Turner (Security Engineer)",
|
|
75
|
+
"Ryan O'Connor (Database Specialist)",
|
|
76
|
+
],
|
|
77
|
+
"duration_minutes": 90,
|
|
78
|
+
"context": "A technical architecture review meeting where the team discusses system design, evaluates trade-offs, and makes architectural decisions.",
|
|
79
|
+
},
|
|
80
|
+
"performance_review": {
|
|
81
|
+
"description": "Quarterly performance review and goal setting",
|
|
82
|
+
"participants": [
|
|
83
|
+
"Linda Zhang (Engineering Manager)",
|
|
84
|
+
"Chris Anderson (Senior Software Engineer)",
|
|
85
|
+
],
|
|
86
|
+
"duration_minutes": 30,
|
|
87
|
+
"context": "A one-on-one performance review meeting between a manager and employee to discuss accomplishments, areas for growth, and career goals.",
|
|
88
|
+
},
|
|
89
|
+
"all_hands": {
|
|
90
|
+
"description": "Company all-hands meeting with quarterly updates",
|
|
91
|
+
"participants": [
|
|
92
|
+
"Mark Taylor (CEO)",
|
|
93
|
+
"Rachel Green (CTO)",
|
|
94
|
+
"John Lee (VP Sales)",
|
|
95
|
+
"Amy White (VP Marketing)",
|
|
96
|
+
],
|
|
97
|
+
"duration_minutes": 45,
|
|
98
|
+
"context": "A company-wide meeting where leadership shares business updates, financial results, and strategic direction with all employees.",
|
|
99
|
+
},
|
|
100
|
+
"budget_planning": {
|
|
101
|
+
"description": "Annual budget planning and resource allocation",
|
|
102
|
+
"participants": [
|
|
103
|
+
"Patricia Brown (CFO)",
|
|
104
|
+
"Daniel Kim (VP Engineering)",
|
|
105
|
+
"Michelle Jones (VP Sales)",
|
|
106
|
+
"Steve Wilson (VP Marketing)",
|
|
107
|
+
],
|
|
108
|
+
"duration_minutes": 75,
|
|
109
|
+
"context": "A budget planning meeting where department heads discuss resource needs, budget allocations, and strategic investments for the upcoming year.",
|
|
110
|
+
},
|
|
111
|
+
"product_roadmap": {
|
|
112
|
+
"description": "Product roadmap discussion and feature prioritization",
|
|
113
|
+
"participants": [
|
|
114
|
+
"Nicole Davis (Product Manager)",
|
|
115
|
+
"Frank Chen (Engineering Lead)",
|
|
116
|
+
"Jessica Miller (Senior Designer)",
|
|
117
|
+
"Carlos Ruiz (Data Analyst)",
|
|
118
|
+
],
|
|
119
|
+
"duration_minutes": 60,
|
|
120
|
+
"context": "A product planning meeting to review customer feedback, prioritize features, and define the product roadmap for the next quarter.",
|
|
121
|
+
},
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
def _estimate_tokens(self, text):
|
|
125
|
+
"""Rough token estimation (approximately 4 characters per token)."""
|
|
126
|
+
return len(text) // 4
|
|
127
|
+
|
|
128
|
+
def _validate_transcript_format(self, content):
|
|
129
|
+
"""
|
|
130
|
+
Validate that the transcript doesn't contain forbidden sections.
|
|
131
|
+
Returns (is_valid, warnings) tuple.
|
|
132
|
+
"""
|
|
133
|
+
warnings = []
|
|
134
|
+
content_lower = content.lower()
|
|
135
|
+
|
|
136
|
+
# Check for common summary section headers
|
|
137
|
+
forbidden_patterns = [
|
|
138
|
+
("summary:", "Summary section"),
|
|
139
|
+
("action items:", "Action items section"),
|
|
140
|
+
("action item:", "Action items section"),
|
|
141
|
+
("key decisions:", "Key decisions section"),
|
|
142
|
+
("decisions:", "Decisions section"),
|
|
143
|
+
("next steps:", "Next steps section"),
|
|
144
|
+
("follow-up:", "Follow-up section"),
|
|
145
|
+
("follow up:", "Follow-up section"),
|
|
146
|
+
("takeaways:", "Takeaways section"),
|
|
147
|
+
("conclusions:", "Conclusions section"),
|
|
148
|
+
("meeting notes:", "Meeting notes section"),
|
|
149
|
+
("key points:", "Key points section"),
|
|
150
|
+
]
|
|
151
|
+
|
|
152
|
+
for pattern, description in forbidden_patterns:
|
|
153
|
+
if pattern in content_lower:
|
|
154
|
+
# Check if it's not just part of dialogue (should have newline before it)
|
|
155
|
+
lines = content.split("\n")
|
|
156
|
+
for line in lines:
|
|
157
|
+
line_lower = line.lower().strip()
|
|
158
|
+
# If line starts with the pattern (not just mentioned in dialogue)
|
|
159
|
+
if line_lower.startswith(pattern) or line_lower.startswith(
|
|
160
|
+
"**" + pattern
|
|
161
|
+
):
|
|
162
|
+
warnings.append(f"Found forbidden section: {description}")
|
|
163
|
+
break
|
|
164
|
+
|
|
165
|
+
is_valid = len(warnings) == 0
|
|
166
|
+
return is_valid, warnings
|
|
167
|
+
|
|
168
|
+
def _generate_transcript_with_claude(self, meeting_type, target_tokens):
|
|
169
|
+
"""Generate a meeting transcript using Claude based on the meeting type and target token count."""
|
|
170
|
+
if meeting_type not in self.meeting_templates:
|
|
171
|
+
raise ValueError(f"Unknown meeting type: {meeting_type}")
|
|
172
|
+
|
|
173
|
+
template = self.meeting_templates[meeting_type]
|
|
174
|
+
|
|
175
|
+
# Create a detailed prompt for Claude
|
|
176
|
+
prompt = f"""Generate a realistic meeting transcript for the following scenario:
|
|
177
|
+
|
|
178
|
+
Meeting Type: {template['description']}
|
|
179
|
+
Context: {template['context']}
|
|
180
|
+
Participants: {', '.join(template['participants'])}
|
|
181
|
+
Duration: {template['duration_minutes']} minutes
|
|
182
|
+
Target Length: Approximately {target_tokens} tokens (about {target_tokens * 4} characters)
|
|
183
|
+
|
|
184
|
+
CRITICAL FORMATTING REQUIREMENTS - The transcript MUST contain ONLY these three sections:
|
|
185
|
+
|
|
186
|
+
1. **Meeting Header** - Include:
|
|
187
|
+
- Meeting title/type
|
|
188
|
+
- Date and time
|
|
189
|
+
- Location (can be virtual/in-person/hybrid)
|
|
190
|
+
|
|
191
|
+
2. **Participant List** - List all participants with their roles
|
|
192
|
+
|
|
193
|
+
3. **Transcript** - The actual meeting dialogue with:
|
|
194
|
+
- Natural dialogue between the participants that reflects their roles
|
|
195
|
+
- Realistic conversation flow appropriate for this type of meeting
|
|
196
|
+
- Specific technical details, decisions, and action items MENTIONED IN DIALOGUE (not as separate sections)
|
|
197
|
+
- Natural interruptions, clarifications, and back-and-forth discussion
|
|
198
|
+
- Format: "Speaker Name: What they said"
|
|
199
|
+
|
|
200
|
+
CRITICAL: You MUST NOT include any of the following:
|
|
201
|
+
- Summary or overview sections (DO NOT end with "Summary:" or "In summary:")
|
|
202
|
+
- Action items section (decisions/tasks should only be mentioned within the dialogue)
|
|
203
|
+
- Key decisions section
|
|
204
|
+
- Next steps section
|
|
205
|
+
- Follow-up items section
|
|
206
|
+
- Takeaways or conclusions section
|
|
207
|
+
- Meeting notes section
|
|
208
|
+
- Any other meta-commentary or analysis AFTER the dialogue ends
|
|
209
|
+
|
|
210
|
+
The transcript should end naturally with the last line of dialogue from a participant. Do not add any commentary, summary, or analysis after the dialogue ends.
|
|
211
|
+
|
|
212
|
+
The transcript should be approximately {target_tokens} tokens long and feel authentic and professional, with each participant contributing meaningfully based on their role.
|
|
213
|
+
|
|
214
|
+
Generate ONLY the three sections listed above (header, participants, transcript dialogue). The file should end when the dialogue ends."""
|
|
215
|
+
|
|
216
|
+
try:
|
|
217
|
+
# Generate the transcript using Claude with usage tracking
|
|
218
|
+
self.log.info(
|
|
219
|
+
f"Generating {meeting_type} transcript with Claude (target: {target_tokens} tokens)"
|
|
220
|
+
)
|
|
221
|
+
response = self.claude_client.get_completion_with_usage(prompt)
|
|
222
|
+
|
|
223
|
+
generated_content = (
|
|
224
|
+
response["content"][0].text
|
|
225
|
+
if isinstance(response["content"], list)
|
|
226
|
+
else response["content"]
|
|
227
|
+
)
|
|
228
|
+
actual_tokens = self._estimate_tokens(generated_content)
|
|
229
|
+
|
|
230
|
+
self.log.info(
|
|
231
|
+
f"Generated transcript: {actual_tokens} tokens (target: {target_tokens})"
|
|
232
|
+
)
|
|
233
|
+
|
|
234
|
+
return generated_content, response["usage"], response["cost"]
|
|
235
|
+
|
|
236
|
+
except Exception as e:
|
|
237
|
+
self.log.error(f"Error generating transcript with Claude: {e}")
|
|
238
|
+
raise RuntimeError(f"Failed to generate transcript for {meeting_type}: {e}")
|
|
239
|
+
|
|
240
|
+
def _extend_content_with_claude(
|
|
241
|
+
self, base_content, target_tokens, meeting_type, current_usage, current_cost
|
|
242
|
+
):
|
|
243
|
+
"""Extend existing content to reach target token count using Claude."""
|
|
244
|
+
current_tokens = self._estimate_tokens(base_content)
|
|
245
|
+
|
|
246
|
+
if current_tokens >= target_tokens:
|
|
247
|
+
return base_content, current_usage, current_cost
|
|
248
|
+
|
|
249
|
+
needed_tokens = target_tokens - current_tokens
|
|
250
|
+
template = self.meeting_templates[meeting_type]
|
|
251
|
+
|
|
252
|
+
extension_prompt = f"""Continue the following meeting transcript to make it approximately {needed_tokens} more tokens longer.
|
|
253
|
+
|
|
254
|
+
Current transcript:
|
|
255
|
+
{base_content}
|
|
256
|
+
|
|
257
|
+
Please add more realistic dialogue that:
|
|
258
|
+
1. Maintains the same tone and context as the existing transcript
|
|
259
|
+
2. Continues naturally from where it left off
|
|
260
|
+
3. Adds approximately {needed_tokens} more tokens of content
|
|
261
|
+
4. Includes meaningful discussion relevant to a {template['description']}
|
|
262
|
+
5. Maintains the same participants and their roles
|
|
263
|
+
|
|
264
|
+
CRITICAL REQUIREMENTS:
|
|
265
|
+
- Generate ONLY additional dialogue in the format "Speaker Name: What they said"
|
|
266
|
+
- DO NOT conclude or wrap up the meeting
|
|
267
|
+
- DO NOT add summary sections (no "Summary:", "In summary:", etc.)
|
|
268
|
+
- DO NOT add action items sections (no "Action Items:", etc.)
|
|
269
|
+
- DO NOT add key decisions, next steps, or takeaways sections
|
|
270
|
+
- DO NOT add any meta-commentary or analysis
|
|
271
|
+
- Just continue the natural, ongoing conversation between participants
|
|
272
|
+
- The meeting should feel like it's still in progress, not ending
|
|
273
|
+
|
|
274
|
+
Even though you're extending the transcript, do NOT treat this as the end of the meeting. The conversation should continue naturally without any concluding sections.
|
|
275
|
+
|
|
276
|
+
Generate only the additional transcript dialogue (without repeating the existing content)."""
|
|
277
|
+
|
|
278
|
+
try:
|
|
279
|
+
self.log.info(f"Extending transcript by ~{needed_tokens} tokens")
|
|
280
|
+
response = self.claude_client.get_completion_with_usage(extension_prompt)
|
|
281
|
+
|
|
282
|
+
extension_content = (
|
|
283
|
+
response["content"][0].text
|
|
284
|
+
if isinstance(response["content"], list)
|
|
285
|
+
else response["content"]
|
|
286
|
+
)
|
|
287
|
+
extended_content = base_content + "\n\n" + extension_content
|
|
288
|
+
|
|
289
|
+
# Combine usage and cost data
|
|
290
|
+
total_usage = {
|
|
291
|
+
"input_tokens": current_usage["input_tokens"]
|
|
292
|
+
+ response["usage"]["input_tokens"],
|
|
293
|
+
"output_tokens": current_usage["output_tokens"]
|
|
294
|
+
+ response["usage"]["output_tokens"],
|
|
295
|
+
"total_tokens": current_usage["total_tokens"]
|
|
296
|
+
+ response["usage"]["total_tokens"],
|
|
297
|
+
}
|
|
298
|
+
|
|
299
|
+
total_cost = {
|
|
300
|
+
"input_cost": current_cost["input_cost"]
|
|
301
|
+
+ response["cost"]["input_cost"],
|
|
302
|
+
"output_cost": current_cost["output_cost"]
|
|
303
|
+
+ response["cost"]["output_cost"],
|
|
304
|
+
"total_cost": current_cost["total_cost"]
|
|
305
|
+
+ response["cost"]["total_cost"],
|
|
306
|
+
}
|
|
307
|
+
|
|
308
|
+
actual_tokens = self._estimate_tokens(extended_content)
|
|
309
|
+
self.log.info(f"Extended transcript to {actual_tokens} tokens")
|
|
310
|
+
|
|
311
|
+
return extended_content, total_usage, total_cost
|
|
312
|
+
|
|
313
|
+
except Exception as e:
|
|
314
|
+
self.log.error(f"Error extending transcript with Claude: {e}")
|
|
315
|
+
# Return original content if extension fails
|
|
316
|
+
return base_content, current_usage, current_cost
|
|
317
|
+
|
|
318
|
+
def generate_transcript(self, meeting_type, target_tokens=1000):
|
|
319
|
+
"""Generate a single meeting transcript of specified type and approximate token count using Claude."""
|
|
320
|
+
if meeting_type not in self.meeting_templates:
|
|
321
|
+
raise ValueError(f"Unknown meeting type: {meeting_type}")
|
|
322
|
+
|
|
323
|
+
template = self.meeting_templates[meeting_type]
|
|
324
|
+
|
|
325
|
+
try:
|
|
326
|
+
# Generate transcript with Claude
|
|
327
|
+
content, usage, cost = self._generate_transcript_with_claude(
|
|
328
|
+
meeting_type, target_tokens
|
|
329
|
+
)
|
|
330
|
+
actual_tokens = self._estimate_tokens(content)
|
|
331
|
+
|
|
332
|
+
# If we're significantly under target, try to extend
|
|
333
|
+
if actual_tokens < target_tokens * 0.8: # If less than 80% of target
|
|
334
|
+
self.log.info(
|
|
335
|
+
f"Transcript too short ({actual_tokens} tokens), extending to reach target"
|
|
336
|
+
)
|
|
337
|
+
content, usage, cost = self._extend_content_with_claude(
|
|
338
|
+
content, target_tokens, meeting_type, usage, cost
|
|
339
|
+
)
|
|
340
|
+
actual_tokens = self._estimate_tokens(content)
|
|
341
|
+
|
|
342
|
+
# Add metadata
|
|
343
|
+
metadata = {
|
|
344
|
+
"meeting_type": meeting_type,
|
|
345
|
+
"description": template["description"],
|
|
346
|
+
"participants": template["participants"],
|
|
347
|
+
"estimated_duration_minutes": template["duration_minutes"],
|
|
348
|
+
"estimated_tokens": actual_tokens,
|
|
349
|
+
"target_tokens": target_tokens,
|
|
350
|
+
"generated_date": datetime.now().isoformat(),
|
|
351
|
+
"claude_model": self.claude_client.model,
|
|
352
|
+
"claude_usage": usage,
|
|
353
|
+
"claude_cost": cost,
|
|
354
|
+
}
|
|
355
|
+
|
|
356
|
+
return content, metadata
|
|
357
|
+
|
|
358
|
+
except Exception as e:
|
|
359
|
+
self.log.error(f"Failed to generate transcript for {meeting_type}: {e}")
|
|
360
|
+
raise
|
|
361
|
+
|
|
362
|
+
def generate_transcript_set(self, output_dir, target_tokens=1000, count_per_type=1):
|
|
363
|
+
"""Generate a set of meeting transcripts and save them to the output directory."""
|
|
364
|
+
output_dir = Path(output_dir)
|
|
365
|
+
# Create meetings subdirectory for organized output
|
|
366
|
+
meetings_dir = output_dir / "meetings"
|
|
367
|
+
meetings_dir.mkdir(parents=True, exist_ok=True)
|
|
368
|
+
output_dir = meetings_dir # Use meetings subdirectory as base
|
|
369
|
+
|
|
370
|
+
generated_files = []
|
|
371
|
+
all_metadata = []
|
|
372
|
+
total_usage = {"input_tokens": 0, "output_tokens": 0, "total_tokens": 0}
|
|
373
|
+
total_cost = {"input_cost": 0.0, "output_cost": 0.0, "total_cost": 0.0}
|
|
374
|
+
|
|
375
|
+
for meeting_type in self.meeting_templates.keys():
|
|
376
|
+
for i in range(count_per_type):
|
|
377
|
+
self.log.info(
|
|
378
|
+
f"Generating {meeting_type} transcript {i+1}/{count_per_type}"
|
|
379
|
+
)
|
|
380
|
+
|
|
381
|
+
# Generate transcript
|
|
382
|
+
content, metadata = self.generate_transcript(
|
|
383
|
+
meeting_type, target_tokens
|
|
384
|
+
)
|
|
385
|
+
|
|
386
|
+
# Create filename
|
|
387
|
+
if count_per_type == 1:
|
|
388
|
+
filename = f"{meeting_type}_meeting.txt"
|
|
389
|
+
else:
|
|
390
|
+
filename = f"{meeting_type}_meeting_{i+1}.txt"
|
|
391
|
+
|
|
392
|
+
# Save transcript file
|
|
393
|
+
file_path = output_dir / filename
|
|
394
|
+
with open(file_path, "w", encoding="utf-8") as f:
|
|
395
|
+
f.write(content)
|
|
396
|
+
|
|
397
|
+
# Update metadata with file info
|
|
398
|
+
metadata["filename"] = filename
|
|
399
|
+
metadata["file_path"] = str(file_path)
|
|
400
|
+
metadata["file_size_bytes"] = len(content.encode("utf-8"))
|
|
401
|
+
|
|
402
|
+
generated_files.append(str(file_path))
|
|
403
|
+
all_metadata.append(metadata)
|
|
404
|
+
|
|
405
|
+
# Accumulate usage and cost
|
|
406
|
+
usage = metadata["claude_usage"]
|
|
407
|
+
cost = metadata["claude_cost"]
|
|
408
|
+
total_usage["input_tokens"] += usage["input_tokens"]
|
|
409
|
+
total_usage["output_tokens"] += usage["output_tokens"]
|
|
410
|
+
total_usage["total_tokens"] += usage["total_tokens"]
|
|
411
|
+
total_cost["input_cost"] += cost["input_cost"]
|
|
412
|
+
total_cost["output_cost"] += cost["output_cost"]
|
|
413
|
+
total_cost["total_cost"] += cost["total_cost"]
|
|
414
|
+
|
|
415
|
+
self.log.info(
|
|
416
|
+
f"Generated {filename} ({metadata['estimated_tokens']} tokens, ${cost['total_cost']:.4f})"
|
|
417
|
+
)
|
|
418
|
+
|
|
419
|
+
# Create summary metadata file
|
|
420
|
+
summary = {
|
|
421
|
+
"generation_info": {
|
|
422
|
+
"generated_date": datetime.now().isoformat(),
|
|
423
|
+
"total_files": len(generated_files),
|
|
424
|
+
"target_tokens_per_file": target_tokens,
|
|
425
|
+
"meeting_types": list(self.meeting_templates.keys()),
|
|
426
|
+
"files_per_type": count_per_type,
|
|
427
|
+
"claude_model": self.claude_client.model,
|
|
428
|
+
"total_claude_usage": total_usage,
|
|
429
|
+
"total_claude_cost": total_cost,
|
|
430
|
+
},
|
|
431
|
+
"transcripts": all_metadata,
|
|
432
|
+
}
|
|
433
|
+
|
|
434
|
+
summary_path = output_dir / "transcript_metadata.json"
|
|
435
|
+
with open(summary_path, "w", encoding="utf-8") as f:
|
|
436
|
+
json.dump(summary, f, indent=2)
|
|
437
|
+
|
|
438
|
+
self.log.info(
|
|
439
|
+
f"Generated {len(generated_files)} transcript files in {output_dir}"
|
|
440
|
+
)
|
|
441
|
+
self.log.info(
|
|
442
|
+
f"Total cost: ${total_cost['total_cost']:.4f} ({total_usage['total_tokens']:,} tokens)"
|
|
443
|
+
)
|
|
444
|
+
self.log.info(f"Summary metadata saved to {summary_path}")
|
|
445
|
+
|
|
446
|
+
return {
|
|
447
|
+
"output_directory": str(output_dir),
|
|
448
|
+
"generated_files": generated_files,
|
|
449
|
+
"metadata_file": str(summary_path),
|
|
450
|
+
"summary": summary,
|
|
451
|
+
}
|
|
452
|
+
|
|
453
|
+
|
|
454
|
+
def main():
|
|
455
|
+
"""Command line interface for transcript generation."""
|
|
456
|
+
parser = argparse.ArgumentParser(
|
|
457
|
+
description="Generate example meeting transcripts using Claude AI for testing transcript summarization",
|
|
458
|
+
formatter_class=argparse.RawDescriptionHelpFormatter,
|
|
459
|
+
epilog="""
|
|
460
|
+
Examples:
|
|
461
|
+
# Generate one transcript of each type with ~1000 tokens
|
|
462
|
+
python -m gaia.eval.transcript_generator -o ./output/transcripts
|
|
463
|
+
|
|
464
|
+
# Generate larger transcripts (~3000 tokens each)
|
|
465
|
+
python -m gaia.eval.transcript_generator -o ./output/transcripts --target-tokens 3000
|
|
466
|
+
|
|
467
|
+
# Generate multiple transcripts per type
|
|
468
|
+
python -m gaia.eval.transcript_generator -o ./output/transcripts --count-per-type 3
|
|
469
|
+
|
|
470
|
+
# Generate specific meeting types only
|
|
471
|
+
python -m gaia.eval.transcript_generator -o ./output/transcripts --meeting-types standup planning
|
|
472
|
+
|
|
473
|
+
# Generate small transcripts for quick testing
|
|
474
|
+
python -m gaia.eval.transcript_generator -o ./test_transcripts --target-tokens 500
|
|
475
|
+
|
|
476
|
+
# Use different Claude model
|
|
477
|
+
python -m gaia.eval.transcript_generator -o ./output/transcripts --claude-model claude-3-opus-20240229
|
|
478
|
+
""",
|
|
479
|
+
)
|
|
480
|
+
|
|
481
|
+
parser.add_argument(
|
|
482
|
+
"-o",
|
|
483
|
+
"--output-dir",
|
|
484
|
+
type=str,
|
|
485
|
+
required=True,
|
|
486
|
+
help="Output directory for generated transcript files",
|
|
487
|
+
)
|
|
488
|
+
parser.add_argument(
|
|
489
|
+
"--target-tokens",
|
|
490
|
+
type=int,
|
|
491
|
+
default=1000,
|
|
492
|
+
help="Target token count per transcript (approximate, default: 1000)",
|
|
493
|
+
)
|
|
494
|
+
parser.add_argument(
|
|
495
|
+
"--count-per-type",
|
|
496
|
+
type=int,
|
|
497
|
+
default=1,
|
|
498
|
+
help="Number of transcripts to generate per meeting type (default: 1)",
|
|
499
|
+
)
|
|
500
|
+
parser.add_argument(
|
|
501
|
+
"--meeting-types",
|
|
502
|
+
nargs="+",
|
|
503
|
+
choices=[
|
|
504
|
+
"standup",
|
|
505
|
+
"planning",
|
|
506
|
+
"client_call",
|
|
507
|
+
"design_review",
|
|
508
|
+
"performance_review",
|
|
509
|
+
"all_hands",
|
|
510
|
+
"budget_planning",
|
|
511
|
+
"product_roadmap",
|
|
512
|
+
],
|
|
513
|
+
help="Specific meeting types to generate (default: all types)",
|
|
514
|
+
)
|
|
515
|
+
parser.add_argument(
|
|
516
|
+
"--claude-model",
|
|
517
|
+
type=str,
|
|
518
|
+
default=None,
|
|
519
|
+
help=f"Claude model to use for transcript generation (default: {DEFAULT_CLAUDE_MODEL})",
|
|
520
|
+
)
|
|
521
|
+
|
|
522
|
+
args = parser.parse_args()
|
|
523
|
+
|
|
524
|
+
try:
|
|
525
|
+
generator = TranscriptGenerator(claude_model=args.claude_model)
|
|
526
|
+
except Exception as e:
|
|
527
|
+
print(f"❌ Error initializing transcript generator: {e}")
|
|
528
|
+
print("Make sure ANTHROPIC_API_KEY is set in your environment.")
|
|
529
|
+
return 1
|
|
530
|
+
|
|
531
|
+
try:
|
|
532
|
+
# Filter meeting types if specified
|
|
533
|
+
original_templates = None
|
|
534
|
+
if args.meeting_types:
|
|
535
|
+
# Temporarily filter the templates
|
|
536
|
+
original_templates = generator.meeting_templates.copy()
|
|
537
|
+
generator.meeting_templates = {
|
|
538
|
+
k: v
|
|
539
|
+
for k, v in generator.meeting_templates.items()
|
|
540
|
+
if k in args.meeting_types
|
|
541
|
+
}
|
|
542
|
+
|
|
543
|
+
result = generator.generate_transcript_set(
|
|
544
|
+
output_dir=args.output_dir,
|
|
545
|
+
target_tokens=args.target_tokens,
|
|
546
|
+
count_per_type=args.count_per_type,
|
|
547
|
+
)
|
|
548
|
+
|
|
549
|
+
print("✅ Successfully generated meeting transcripts")
|
|
550
|
+
print(f" Output directory: {result['output_directory']}")
|
|
551
|
+
print(f" Generated files: {len(result['generated_files'])}")
|
|
552
|
+
print(f" Metadata file: {result['metadata_file']}")
|
|
553
|
+
|
|
554
|
+
# Show summary stats
|
|
555
|
+
summary = result["summary"]
|
|
556
|
+
generation_info = summary["generation_info"]
|
|
557
|
+
total_tokens = generation_info["total_claude_usage"]["total_tokens"]
|
|
558
|
+
total_cost = generation_info["total_claude_cost"]["total_cost"]
|
|
559
|
+
avg_tokens = (
|
|
560
|
+
total_tokens / len(summary["transcripts"]) if summary["transcripts"] else 0
|
|
561
|
+
)
|
|
562
|
+
|
|
563
|
+
print(f" Total tokens used: {total_tokens:,}")
|
|
564
|
+
print(f" Total cost: ${total_cost:.4f}")
|
|
565
|
+
print(f" Average tokens per file: {avg_tokens:.0f}")
|
|
566
|
+
print(f" Average cost per file: ${total_cost/len(summary['transcripts']):.4f}")
|
|
567
|
+
print(f" Meeting types: {', '.join(generation_info['meeting_types'])}")
|
|
568
|
+
print(f" Claude model: {generation_info['claude_model']}")
|
|
569
|
+
|
|
570
|
+
# Restore original templates if they were filtered
|
|
571
|
+
if args.meeting_types and original_templates is not None:
|
|
572
|
+
generator.meeting_templates = original_templates
|
|
573
|
+
|
|
574
|
+
except Exception as e:
|
|
575
|
+
print(f"❌ Error generating transcripts: {e}")
|
|
576
|
+
return 1
|
|
577
|
+
|
|
578
|
+
return 0
|
|
579
|
+
|
|
580
|
+
|
|
581
|
+
if __name__ == "__main__":
|
|
582
|
+
exit(main())
|