@empiricalrun/test-gen 0.78.0 → 0.78.2
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.
- package/CHANGELOG.md +19 -0
- package/dist/actions/index.d.ts +0 -1
- package/dist/actions/index.d.ts.map +1 -1
- package/dist/actions/index.js +0 -10
- package/dist/agent/base/index.d.ts +28 -19
- package/dist/agent/base/index.d.ts.map +1 -1
- package/dist/agent/base/index.js +25 -14
- package/dist/agent/browsing/run.d.ts +1 -1
- package/dist/agent/browsing/run.d.ts.map +1 -1
- package/dist/agent/chat/agent-loop.d.ts +5 -5
- package/dist/agent/chat/agent-loop.d.ts.map +1 -1
- package/dist/agent/chat/exports.d.ts +3 -4
- package/dist/agent/chat/exports.d.ts.map +1 -1
- package/dist/agent/chat/exports.js +5 -11
- package/dist/agent/chat/index.d.ts +4 -3
- package/dist/agent/chat/index.d.ts.map +1 -1
- package/dist/agent/chat/index.js +12 -5
- package/dist/agent/chat/models.d.ts +1 -1
- package/dist/agent/chat/models.d.ts.map +1 -1
- package/dist/agent/chat/models.js +3 -3
- package/dist/agent/chat/prompt/pw-utils-docs.d.ts +1 -1
- package/dist/agent/chat/prompt/pw-utils-docs.d.ts.map +1 -1
- package/dist/agent/chat/prompt/pw-utils-docs.js +42 -0
- package/dist/agent/chat/prompt/repo.d.ts +2 -2
- package/dist/agent/chat/prompt/repo.d.ts.map +1 -1
- package/dist/agent/chat/prompt/repo.js +2 -2
- package/dist/agent/chat/state.d.ts +14 -19
- package/dist/agent/chat/state.d.ts.map +1 -1
- package/dist/agent/chat/state.js +10 -45
- package/dist/agent/chat/utils.d.ts +5 -5
- package/dist/agent/chat/utils.d.ts.map +1 -1
- package/dist/agent/cli.d.ts +2 -2
- package/dist/agent/cli.d.ts.map +1 -1
- package/dist/agent/cli.js +5 -6
- package/dist/agent/code-review/index.d.ts +4 -3
- package/dist/agent/code-review/index.d.ts.map +1 -1
- package/dist/agent/code-review/index.js +10 -4
- package/dist/agent/code-review/types.d.ts +2 -35
- package/dist/agent/code-review/types.d.ts.map +1 -1
- package/dist/agent/code-review/types.js +4 -11
- package/dist/agent/cua/index.d.ts +1 -1
- package/dist/agent/cua/index.d.ts.map +1 -1
- package/dist/agent/cua/index.js +24 -13
- package/dist/agent/cua/pw-codegen/factory.d.ts +15 -0
- package/dist/agent/cua/pw-codegen/factory.d.ts.map +1 -0
- package/dist/agent/cua/pw-codegen/factory.js +59 -0
- package/dist/agent/cua/pw-codegen/index.d.ts +7 -0
- package/dist/agent/cua/pw-codegen/index.d.ts.map +1 -0
- package/dist/agent/cua/pw-codegen/index.js +14 -0
- package/dist/agent/cua/pw-codegen/pw-event-sink/index.d.ts +43 -0
- package/dist/agent/cua/pw-codegen/pw-event-sink/index.d.ts.map +1 -0
- package/dist/agent/cua/pw-codegen/pw-event-sink/index.js +250 -0
- package/dist/agent/cua/pw-codegen/pw-pause/for-recorder.d.ts.map +1 -1
- package/dist/agent/cua/pw-codegen/pw-pause/for-recorder.js +0 -3
- package/dist/agent/cua/pw-codegen/pw-pause/index.d.ts +1 -1
- package/dist/agent/cua/pw-codegen/pw-pause/index.d.ts.map +1 -1
- package/dist/agent/cua/pw-codegen/pw-pause/index.js +7 -3
- package/dist/agent/cua/pw-codegen/pw-pause/patch.d.ts +15 -3
- package/dist/agent/cua/pw-codegen/pw-pause/patch.d.ts.map +1 -1
- package/dist/agent/cua/pw-codegen/pw-pause/patch.js +38 -10
- package/dist/agent/cua/pw-codegen/version.d.ts +25 -0
- package/dist/agent/cua/pw-codegen/version.d.ts.map +1 -0
- package/dist/agent/cua/pw-codegen/version.js +86 -0
- package/dist/agent/index.d.ts +1 -5
- package/dist/agent/index.d.ts.map +1 -1
- package/dist/agent/index.js +1 -11
- package/dist/agent/master/element-annotation.d.ts +1 -1
- package/dist/agent/master/element-annotation.d.ts.map +1 -1
- package/dist/agent/master/next-action.d.ts +1 -1
- package/dist/agent/master/next-action.d.ts.map +1 -1
- package/dist/agent/master/next-action.js +1 -6
- package/dist/agent/master/run.d.ts +3 -2
- package/dist/agent/master/run.d.ts.map +1 -1
- package/dist/agent/master/run.js +0 -26
- package/dist/agent/triage/index.d.ts +4 -3
- package/dist/agent/triage/index.d.ts.map +1 -1
- package/dist/agent/triage/index.js +33 -20
- package/dist/artifacts/index.d.ts +1 -1
- package/dist/artifacts/index.d.ts.map +1 -1
- package/dist/artifacts/utils.d.ts +1 -1
- package/dist/artifacts/utils.d.ts.map +1 -1
- package/dist/bin/environments.d.ts +1 -1
- package/dist/bin/environments.d.ts.map +1 -1
- package/dist/bin/index.js +2 -2
- package/dist/bin/setup.d.ts +1 -1
- package/dist/bin/setup.d.ts.map +1 -1
- package/dist/bin/utils/fs/index.d.ts +1 -1
- package/dist/bin/utils/fs/index.d.ts.map +1 -1
- package/dist/bin/utils/platform/web/index.d.ts +2 -2
- package/dist/bin/utils/platform/web/index.d.ts.map +1 -1
- package/dist/bin/utils/platform/web/index.js +1 -1
- package/dist/bin/utils/scenarios/index.d.ts +1 -1
- package/dist/bin/utils/scenarios/index.d.ts.map +1 -1
- package/dist/constants/index.d.ts +0 -4
- package/dist/constants/index.d.ts.map +1 -1
- package/dist/constants/index.js +0 -6
- package/dist/dashboard/client.d.ts +1 -1
- package/dist/dashboard/client.d.ts.map +1 -1
- package/dist/dashboard/index.d.ts +1 -0
- package/dist/dashboard/index.d.ts.map +1 -1
- package/dist/dashboard/index.js +4 -1
- package/dist/dashboard/tool-response.d.ts +5 -0
- package/dist/dashboard/tool-response.d.ts.map +1 -0
- package/dist/dashboard/tool-response.js +88 -0
- package/dist/dashboard/totp.js +1 -1
- package/dist/file/server.d.ts +1 -1
- package/dist/file/server.d.ts.map +1 -1
- package/dist/file/server.js +2 -1
- package/dist/file-info/adapters/file-system/index.d.ts +1 -1
- package/dist/file-info/adapters/file-system/index.d.ts.map +1 -1
- package/dist/file-info/adapters/file-system/reader.d.ts +1 -1
- package/dist/file-info/adapters/file-system/reader.d.ts.map +1 -1
- package/dist/file-info/adapters/github/index.d.ts +2 -1
- package/dist/file-info/adapters/github/index.d.ts.map +1 -1
- package/dist/file-info/adapters/github/reader.d.ts +2 -1
- package/dist/file-info/adapters/github/reader.d.ts.map +1 -1
- package/dist/recorder/index.d.ts.map +1 -1
- package/dist/recorder/index.js +9 -3
- package/dist/recorder/upload.d.ts +1 -1
- package/dist/recorder/upload.d.ts.map +1 -1
- package/dist/tools/analyse-video/index.d.ts +1 -1
- package/dist/tools/analyse-video/index.d.ts.map +1 -1
- package/dist/tools/analyse-video/index.js +20 -13
- package/dist/tools/create-pull-request/index.d.ts +1 -1
- package/dist/tools/create-pull-request/index.d.ts.map +1 -1
- package/dist/tools/create-pull-request/utils.d.ts +3 -2
- package/dist/tools/create-pull-request/utils.d.ts.map +1 -1
- package/dist/tools/definitions/analyse-video.d.ts +5 -37
- package/dist/tools/definitions/analyse-video.d.ts.map +1 -1
- package/dist/tools/definitions/analyse-video.js +12 -25
- package/dist/tools/definitions/delete-file.d.ts +5 -1
- package/dist/tools/definitions/delete-file.d.ts.map +1 -1
- package/dist/tools/definitions/delete-file.js +3 -3
- package/dist/tools/definitions/download-build.d.ts +2 -6
- package/dist/tools/definitions/download-build.d.ts.map +1 -1
- package/dist/tools/definitions/grep.d.ts +1 -1
- package/dist/tools/definitions/grep.d.ts.map +1 -1
- package/dist/tools/definitions/list-tests-and-projects.d.ts +2 -6
- package/dist/tools/definitions/list-tests-and-projects.d.ts.map +1 -1
- package/dist/tools/definitions/list-tests-and-projects.js +1 -1
- package/dist/tools/definitions/merge-conflicts.d.ts +1 -1
- package/dist/tools/definitions/merge-conflicts.d.ts.map +1 -1
- package/dist/tools/definitions/merge-conflicts.js +2 -2
- package/dist/tools/definitions/rename-file.d.ts +1 -1
- package/dist/tools/definitions/rename-file.d.ts.map +1 -1
- package/dist/tools/definitions/review-pull-request.d.ts +1 -1
- package/dist/tools/definitions/review-pull-request.d.ts.map +1 -1
- package/dist/tools/definitions/review-pull-request.js +1 -1
- package/dist/tools/definitions/run-test.d.ts +3 -15
- package/dist/tools/definitions/run-test.d.ts.map +1 -1
- package/dist/tools/definitions/safe-bash.d.ts +8 -0
- package/dist/tools/definitions/safe-bash.d.ts.map +1 -0
- package/dist/tools/definitions/safe-bash.js +32 -0
- package/dist/tools/definitions/str_replace_editor.d.ts +1 -1
- package/dist/tools/definitions/str_replace_editor.d.ts.map +1 -1
- package/dist/tools/definitions/test-gen-browser.d.ts +3 -15
- package/dist/tools/definitions/test-gen-browser.d.ts.map +1 -1
- package/dist/tools/definitions/upgrade-packages.d.ts +4 -26
- package/dist/tools/definitions/upgrade-packages.d.ts.map +1 -1
- package/dist/tools/definitions/utils.d.ts +2 -10
- package/dist/tools/definitions/utils.d.ts.map +1 -1
- package/dist/tools/definitions/utils.js +1 -1
- package/dist/tools/delete-file/index.d.ts +1 -1
- package/dist/tools/delete-file/index.d.ts.map +1 -1
- package/dist/tools/delete-file/index.js +6 -2
- package/dist/tools/diagnosis-fetcher.d.ts +1 -1
- package/dist/tools/diagnosis-fetcher.d.ts.map +1 -1
- package/dist/tools/diagnosis-fetcher.js +92 -47
- package/dist/tools/download-build/index.d.ts +1 -1
- package/dist/tools/download-build/index.d.ts.map +1 -1
- package/dist/tools/executor/base.d.ts +3 -2
- package/dist/tools/executor/base.d.ts.map +1 -1
- package/dist/tools/executor/base.js +5 -8
- package/dist/tools/executor/index.d.ts +3 -0
- package/dist/tools/executor/index.d.ts.map +1 -1
- package/dist/tools/executor/index.js +12 -10
- package/dist/tools/executor/utils/checkpoint.d.ts.map +1 -1
- package/dist/tools/executor/utils/checkpoint.js +0 -4
- package/dist/tools/executor/utils/git.d.ts +7 -1
- package/dist/tools/executor/utils/git.d.ts.map +1 -1
- package/dist/tools/executor/utils/git.js +10 -3
- package/dist/tools/executor/utils/index.d.ts +1 -2
- package/dist/tools/executor/utils/index.d.ts.map +1 -1
- package/dist/tools/executor/utils/index.js +0 -20
- package/dist/tools/executor/utils/pr-description.d.ts +1 -1
- package/dist/tools/executor/utils/pr-description.d.ts.map +1 -1
- package/dist/tools/fetch-file/index.d.ts +2 -6
- package/dist/tools/fetch-file/index.d.ts.map +1 -1
- package/dist/tools/fetch-file/index.js +53 -13
- package/dist/tools/fetch-file/utils.d.ts +3 -0
- package/dist/tools/fetch-file/utils.d.ts.map +1 -0
- package/dist/tools/fetch-file/utils.js +136 -0
- package/dist/tools/fetch-session-diff/index.d.ts +1 -1
- package/dist/tools/fetch-session-diff/index.d.ts.map +1 -1
- package/dist/tools/fetch-session-diff/index.js +26 -2
- package/dist/tools/file-operations/create.d.ts +1 -1
- package/dist/tools/file-operations/create.d.ts.map +1 -1
- package/dist/tools/file-operations/index.d.ts +2 -1
- package/dist/tools/file-operations/index.d.ts.map +1 -1
- package/dist/tools/file-operations/insert.d.ts +1 -1
- package/dist/tools/file-operations/insert.d.ts.map +1 -1
- package/dist/tools/file-operations/replace.d.ts +1 -1
- package/dist/tools/file-operations/replace.d.ts.map +1 -1
- package/dist/tools/file-operations/replace.js +0 -1
- package/dist/tools/file-operations/view/index.d.ts +2 -1
- package/dist/tools/file-operations/view/index.d.ts.map +1 -1
- package/dist/tools/firecrawl-scrape/index.d.ts +9 -0
- package/dist/tools/firecrawl-scrape/index.d.ts.map +1 -0
- package/dist/tools/firecrawl-scrape/index.js +107 -0
- package/dist/tools/grep/index.d.ts +1 -1
- package/dist/tools/grep/index.d.ts.map +1 -1
- package/dist/tools/grep/index.js +15 -12
- package/dist/tools/index.d.ts +5 -24
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +21 -42
- package/dist/tools/issues-v1/create-issue.d.ts +3 -0
- package/dist/tools/issues-v1/create-issue.d.ts.map +1 -0
- package/dist/tools/{issues → issues-v1}/create-issue.js +5 -9
- package/dist/tools/issues-v1/index.d.ts.map +1 -0
- package/dist/tools/issues-v1/list-issues.d.ts +3 -0
- package/dist/tools/issues-v1/list-issues.d.ts.map +1 -0
- package/dist/tools/issues-v1/update-issue.d.ts +3 -0
- package/dist/tools/issues-v1/update-issue.d.ts.map +1 -0
- package/dist/tools/{issues → issues-v1}/update-issue.js +1 -9
- package/dist/tools/{issues → issues-v1}/utils.d.ts +2 -1
- package/dist/tools/issues-v1/utils.d.ts.map +1 -0
- package/dist/tools/issues-v2/create-issue.d.ts +3 -0
- package/dist/tools/issues-v2/create-issue.d.ts.map +1 -0
- package/dist/tools/issues-v2/create-issue.js +82 -0
- package/dist/tools/issues-v2/set-issue-description.d.ts +3 -0
- package/dist/tools/issues-v2/set-issue-description.d.ts.map +1 -0
- package/dist/tools/issues-v2/set-issue-description.js +59 -0
- package/dist/tools/issues-v2/update-issue.d.ts +3 -0
- package/dist/tools/issues-v2/update-issue.d.ts.map +1 -0
- package/dist/tools/issues-v2/update-issue.js +85 -0
- package/dist/tools/list-environments.d.ts +1 -1
- package/dist/tools/list-environments.d.ts.map +1 -1
- package/dist/tools/list-tests-and-projects/index.d.ts +1 -1
- package/dist/tools/list-tests-and-projects/index.d.ts.map +1 -1
- package/dist/tools/list-tests-and-projects/index.js +14 -4
- package/dist/tools/merge-conflicts/index.d.ts +1 -1
- package/dist/tools/merge-conflicts/index.d.ts.map +1 -1
- package/dist/tools/merge-conflicts/index.js +23 -10
- package/dist/tools/rename-file/index.d.ts +1 -1
- package/dist/tools/rename-file/index.d.ts.map +1 -1
- package/dist/tools/rename-file/index.js +0 -1
- package/dist/tools/review-pull-request/index.d.ts +1 -1
- package/dist/tools/review-pull-request/index.d.ts.map +1 -1
- package/dist/tools/review-pull-request/index.js +5 -4
- package/dist/tools/run-test.d.ts +1 -1
- package/dist/tools/run-test.d.ts.map +1 -1
- package/dist/tools/safe-bash/index.d.ts +3 -0
- package/dist/tools/safe-bash/index.d.ts.map +1 -0
- package/dist/tools/safe-bash/index.js +128 -0
- package/dist/tools/test-gen-browser.d.ts +1 -1
- package/dist/tools/test-gen-browser.d.ts.map +1 -1
- package/dist/tools/test-gen-browser.js +64 -21
- package/dist/tools/test-run-fetcher/index.d.ts +2 -2
- package/dist/tools/test-run-fetcher/index.d.ts.map +1 -1
- package/dist/tools/test-run-fetcher/index.js +67 -66
- package/dist/tools/trace-dot-zip/index.d.ts +1 -1
- package/dist/tools/trace-dot-zip/index.d.ts.map +1 -1
- package/dist/tools/trace-dot-zip/utils/network-trace.d.ts.map +1 -1
- package/dist/tools/trace-dot-zip/utils/network-trace.js +5 -10
- package/dist/tools/triage-summary/index.d.ts +1 -1
- package/dist/tools/triage-summary/index.d.ts.map +1 -1
- package/dist/tools/triage-summary/index.js +5 -2
- package/dist/tools/triage-summary/utils.d.ts +1 -1
- package/dist/tools/triage-summary/utils.d.ts.map +1 -1
- package/dist/tools/upgrade-packages/index.d.ts +1 -1
- package/dist/tools/upgrade-packages/index.d.ts.map +1 -1
- package/dist/tools/upgrade-packages/index.js +14 -8
- package/dist/tools/upgrade-packages/utils.d.ts +9 -5
- package/dist/tools/upgrade-packages/utils.d.ts.map +1 -1
- package/dist/tools/upgrade-packages/utils.js +56 -16
- package/dist/tools/utils/queue.d.ts +1 -1
- package/dist/tools/utils/queue.d.ts.map +1 -1
- package/dist/tools/utils/validate-schema.d.ts +3 -0
- package/dist/tools/utils/validate-schema.d.ts.map +1 -0
- package/dist/tools/utils/validate-schema.js +27 -0
- package/dist/utils/SQSClient.d.ts +1 -1
- package/dist/utils/SQSClient.d.ts.map +1 -1
- package/dist/utils/dedup/dedup-image.js +2 -2
- package/dist/utils/dedup/find-threshold.d.ts +1 -1
- package/dist/utils/dedup/find-threshold.d.ts.map +1 -1
- package/dist/utils/dedup/find-threshold.js +2 -2
- package/dist/utils/model.d.ts +1 -1
- package/dist/utils/model.d.ts.map +1 -1
- package/dist/utils/model.js +6 -10
- package/dist/utils/playwright-report-parser.d.ts +1 -1
- package/dist/utils/playwright-report-parser.d.ts.map +1 -1
- package/dist/utils/playwright-test-id.d.ts +8 -0
- package/dist/utils/playwright-test-id.d.ts.map +1 -0
- package/dist/utils/playwright-test-id.js +21 -0
- package/dist/utils/repo-tree.d.ts +1 -1
- package/dist/utils/repo-tree.d.ts.map +1 -1
- package/dist/utils/slug.d.ts.map +1 -1
- package/dist/utils/slug.js +15 -4
- package/dist/utils/url-validation.d.ts +2 -0
- package/dist/utils/url-validation.d.ts.map +1 -0
- package/dist/utils/url-validation.js +16 -0
- package/dist/video-core/index.d.ts +7 -24
- package/dist/video-core/index.d.ts.map +1 -1
- package/dist/video-core/index.js +32 -25
- package/dist/video-core/model-limits.d.ts +2 -2
- package/dist/video-core/model-limits.d.ts.map +1 -1
- package/dist/video-core/model-limits.js +9 -19
- package/dist/video-core/storage-manager.d.ts +2 -1
- package/dist/video-core/storage-manager.d.ts.map +1 -1
- package/dist/video-core/types.d.ts +1 -1
- package/dist/video-core/types.d.ts.map +1 -1
- package/dist/video-core/utils.d.ts +5 -7
- package/dist/video-core/utils.d.ts.map +1 -1
- package/dist/video-core/utils.js +39 -132
- package/package.json +10 -6
- package/tsconfig.tsbuildinfo +1 -1
- package/dist/actions/skill.d.ts +0 -21
- package/dist/actions/skill.d.ts.map +0 -1
- package/dist/actions/skill.js +0 -127
- package/dist/agent/chat/filesystem-cache.d.ts +0 -12
- package/dist/agent/chat/filesystem-cache.d.ts.map +0 -1
- package/dist/agent/chat/filesystem-cache.js +0 -101
- package/dist/agent/codegen/create-test-block.d.ts +0 -8
- package/dist/agent/codegen/create-test-block.d.ts.map +0 -1
- package/dist/agent/codegen/create-test-block.js +0 -47
- package/dist/agent/codegen/fix-ts-errors.d.ts +0 -12
- package/dist/agent/codegen/fix-ts-errors.d.ts.map +0 -1
- package/dist/agent/codegen/fix-ts-errors.js +0 -78
- package/dist/agent/codegen/lexical-scoped-vars.d.ts +0 -9
- package/dist/agent/codegen/lexical-scoped-vars.d.ts.map +0 -1
- package/dist/agent/codegen/lexical-scoped-vars.js +0 -55
- package/dist/agent/codegen/skills-retriever.d.ts +0 -26
- package/dist/agent/codegen/skills-retriever.d.ts.map +0 -1
- package/dist/agent/codegen/skills-retriever.js +0 -93
- package/dist/agent/codegen/test-update-feedback.d.ts +0 -12
- package/dist/agent/codegen/test-update-feedback.d.ts.map +0 -1
- package/dist/agent/codegen/test-update-feedback.js +0 -49
- package/dist/agent/codegen/types.d.ts +0 -25
- package/dist/agent/codegen/types.d.ts.map +0 -1
- package/dist/agent/codegen/types.js +0 -8
- package/dist/agent/codegen/update-flow.d.ts +0 -36
- package/dist/agent/codegen/update-flow.d.ts.map +0 -1
- package/dist/agent/codegen/update-flow.js +0 -259
- package/dist/agent/codegen/use-skill.d.ts +0 -11
- package/dist/agent/codegen/use-skill.d.ts.map +0 -1
- package/dist/agent/codegen/use-skill.js +0 -53
- package/dist/agent/codegen/utils.d.ts +0 -110
- package/dist/agent/codegen/utils.d.ts.map +0 -1
- package/dist/agent/codegen/utils.js +0 -376
- package/dist/agent/master/browser-tests/skills.spec.d.ts +0 -2
- package/dist/agent/master/browser-tests/skills.spec.d.ts.map +0 -1
- package/dist/agent/master/browser-tests/skills.spec.js +0 -112
- package/dist/agent/master/execute-skill-action.d.ts +0 -11
- package/dist/agent/master/execute-skill-action.d.ts.map +0 -1
- package/dist/agent/master/execute-skill-action.js +0 -23
- package/dist/agent/video-analysis/executor/index.d.ts +0 -5
- package/dist/agent/video-analysis/executor/index.d.ts.map +0 -1
- package/dist/agent/video-analysis/executor/index.js +0 -10
- package/dist/agent/video-analysis/index.d.ts +0 -7
- package/dist/agent/video-analysis/index.d.ts.map +0 -1
- package/dist/agent/video-analysis/index.js +0 -60
- package/dist/evals/append-create-test-agent.evals.d.ts +0 -4
- package/dist/evals/append-create-test-agent.evals.d.ts.map +0 -1
- package/dist/evals/append-create-test-agent.evals.js +0 -117
- package/dist/evals/fetch-pom-skills-agent.evals.d.ts +0 -4
- package/dist/evals/fetch-pom-skills-agent.evals.d.ts.map +0 -1
- package/dist/evals/fetch-pom-skills-agent.evals.js +0 -36
- package/dist/evals/master-agent.evals.d.ts +0 -4
- package/dist/evals/master-agent.evals.d.ts.map +0 -1
- package/dist/evals/master-agent.evals.js +0 -35
- package/dist/evals/type.d.ts +0 -12
- package/dist/evals/type.d.ts.map +0 -1
- package/dist/evals/type.js +0 -2
- package/dist/evals/update-scenario-agent.evals.d.ts +0 -4
- package/dist/evals/update-scenario-agent.evals.d.ts.map +0 -1
- package/dist/evals/update-scenario-agent.evals.js +0 -47
- package/dist/tools/fetch-last-successful-test-run/index.d.ts +0 -3
- package/dist/tools/fetch-last-successful-test-run/index.d.ts.map +0 -1
- package/dist/tools/fetch-last-successful-test-run/index.js +0 -60
- package/dist/tools/issues/create-issue.d.ts +0 -3
- package/dist/tools/issues/create-issue.d.ts.map +0 -1
- package/dist/tools/issues/index.d.ts.map +0 -1
- package/dist/tools/issues/list-issues.d.ts +0 -3
- package/dist/tools/issues/list-issues.d.ts.map +0 -1
- package/dist/tools/issues/metadata-schema.d.ts +0 -24
- package/dist/tools/issues/metadata-schema.d.ts.map +0 -1
- package/dist/tools/issues/metadata-schema.js +0 -22
- package/dist/tools/issues/update-issue.d.ts +0 -3
- package/dist/tools/issues/update-issue.d.ts.map +0 -1
- package/dist/tools/issues/utils.d.ts.map +0 -1
- package/dist/tools/utils/urls.d.ts +0 -5
- package/dist/tools/utils/urls.d.ts.map +0 -1
- package/dist/tools/utils/urls.js +0 -19
- package/dist/tools/view-failed-test-run-report/index.d.ts +0 -12
- package/dist/tools/view-failed-test-run-report/index.d.ts.map +0 -1
- package/dist/tools/view-failed-test-run-report/index.js +0 -151
- package/dist/video-core/agent-orchestrator.d.ts +0 -13
- package/dist/video-core/agent-orchestrator.d.ts.map +0 -1
- package/dist/video-core/agent-orchestrator.js +0 -59
- package/dist/video-core/xml-parser.d.ts +0 -3
- package/dist/video-core/xml-parser.d.ts.map +0 -1
- package/dist/video-core/xml-parser.js +0 -27
- /package/dist/tools/{issues → issues-v1}/index.d.ts +0 -0
- /package/dist/tools/{issues → issues-v1}/index.js +0 -0
- /package/dist/tools/{issues → issues-v1}/list-issues.js +0 -0
- /package/dist/tools/{issues → issues-v1}/utils.js +0 -0
|
@@ -1,49 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.applyTestUpdateFeedbacks = applyTestUpdateFeedbacks;
|
|
4
|
-
const llm_1 = require("@empiricalrun/llm");
|
|
5
|
-
const constants_1 = require("../../constants");
|
|
6
|
-
const utils_1 = require("./utils");
|
|
7
|
-
async function applyTestUpdateFeedbacks({ trace, oldPrompt, feedbacks, agentResponse, }) {
|
|
8
|
-
const applyTestUpdateFeedbacksSpan = trace?.span({
|
|
9
|
-
name: "apply-test-update-feedbacks",
|
|
10
|
-
input: {
|
|
11
|
-
oldPrompt,
|
|
12
|
-
feedbacks,
|
|
13
|
-
agentResponse,
|
|
14
|
-
},
|
|
15
|
-
});
|
|
16
|
-
const llm = new llm_1.LLM({
|
|
17
|
-
trace: applyTestUpdateFeedbacksSpan,
|
|
18
|
-
provider: "openai",
|
|
19
|
-
defaultModel: "gpt-4o",
|
|
20
|
-
providerApiKey: constants_1.MODEL_API_KEYS["openai"],
|
|
21
|
-
});
|
|
22
|
-
const response = await llm.createChatCompletion({
|
|
23
|
-
traceName: "test-update-feedbacks-llm",
|
|
24
|
-
modelParameters: {
|
|
25
|
-
...constants_1.DEFAULT_MODEL_PARAMETERS,
|
|
26
|
-
temperature: 1,
|
|
27
|
-
},
|
|
28
|
-
messages: [
|
|
29
|
-
...oldPrompt,
|
|
30
|
-
{
|
|
31
|
-
role: "assistant",
|
|
32
|
-
content: agentResponse,
|
|
33
|
-
},
|
|
34
|
-
{
|
|
35
|
-
role: "user",
|
|
36
|
-
content: `
|
|
37
|
-
Following errors were found in the previous response
|
|
38
|
-
${feedbacks.map((f) => `- ${f.errorMessage}`).join("\n")}
|
|
39
|
-
|
|
40
|
-
Fix the above failures and respond with same format as the previous response`,
|
|
41
|
-
},
|
|
42
|
-
],
|
|
43
|
-
});
|
|
44
|
-
const updatedResponse = response?.content || "";
|
|
45
|
-
const fileChanges = (0, utils_1.extractTestUpdates)(updatedResponse);
|
|
46
|
-
const filteredFileChanges = fileChanges.filter((f) => feedbacks.some((e) => e?.filePath === f.filePath));
|
|
47
|
-
applyTestUpdateFeedbacksSpan?.end({ output: { fileChanges } });
|
|
48
|
-
return filteredFileChanges;
|
|
49
|
-
}
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
import type { TestCase } from "@empiricalrun/shared-types";
|
|
2
|
-
export type CodeUpdate = {
|
|
3
|
-
filePath: string | undefined;
|
|
4
|
-
oldCode: string | undefined;
|
|
5
|
-
newCode: string | undefined;
|
|
6
|
-
reason: string | undefined;
|
|
7
|
-
};
|
|
8
|
-
export type CreateTestCodeUpdate = {
|
|
9
|
-
filePath: string | undefined;
|
|
10
|
-
code: string | undefined;
|
|
11
|
-
reason: string | undefined;
|
|
12
|
-
};
|
|
13
|
-
export type FileUpdateResponse = {
|
|
14
|
-
error: boolean;
|
|
15
|
-
errorMessage: string;
|
|
16
|
-
filePath: string;
|
|
17
|
-
};
|
|
18
|
-
export type UpdatedTestCase = TestCase & {
|
|
19
|
-
updatedFiles: string[];
|
|
20
|
-
};
|
|
21
|
-
export declare enum CodeEditorToolCall {
|
|
22
|
-
STR_REPLACE = "str_replace",
|
|
23
|
-
CREATE_FILE = "create_file"
|
|
24
|
-
}
|
|
25
|
-
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/agent/codegen/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAC;AAE3D,MAAM,MAAM,UAAU,GAAG;IACvB,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7B,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;CAC5B,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG;IACjC,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7B,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC;IACzB,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;CAC5B,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,KAAK,EAAE,OAAO,CAAC;IACf,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;CAClB,CAAC;AAGF,MAAM,MAAM,eAAe,GAAG,QAAQ,GAAG;IACvC,YAAY,EAAE,MAAM,EAAE,CAAC;CACxB,CAAC;AAEF,oBAAY,kBAAkB;IAC5B,WAAW,gBAAgB;IAC3B,WAAW,gBAAgB;CAC5B"}
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.CodeEditorToolCall = void 0;
|
|
4
|
-
var CodeEditorToolCall;
|
|
5
|
-
(function (CodeEditorToolCall) {
|
|
6
|
-
CodeEditorToolCall["STR_REPLACE"] = "str_replace";
|
|
7
|
-
CodeEditorToolCall["CREATE_FILE"] = "create_file";
|
|
8
|
-
})(CodeEditorToolCall || (exports.CodeEditorToolCall = CodeEditorToolCall = {}));
|
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
import { TraceClient } from "@empiricalrun/llm";
|
|
2
|
-
import type { TestCase, TestGenConfigOptions } from "@empiricalrun/shared-types";
|
|
3
|
-
import { ChatCompletionMessageParam } from "openai/resources/index.mjs";
|
|
4
|
-
import { CodeUpdate, UpdatedTestCase } from "./types";
|
|
5
|
-
export declare function getUpdateTestCodeCompletion({ testCase, testFileContent, testFiles, pageFiles, testFilePath, options, trace, }: {
|
|
6
|
-
testCase: TestCase;
|
|
7
|
-
testFiles: string;
|
|
8
|
-
pageFiles: string;
|
|
9
|
-
testFilePath: string;
|
|
10
|
-
testFileContent: string;
|
|
11
|
-
trace?: TraceClient;
|
|
12
|
-
options?: TestGenConfigOptions;
|
|
13
|
-
}): Promise<{
|
|
14
|
-
prompt: ChatCompletionMessageParam[];
|
|
15
|
-
agentResponse: string;
|
|
16
|
-
fileChanges: CodeUpdate[];
|
|
17
|
-
}>;
|
|
18
|
-
export declare function updateTest({ testCase, file, trace, }: {
|
|
19
|
-
testCase: TestCase;
|
|
20
|
-
file: string;
|
|
21
|
-
trace?: TraceClient;
|
|
22
|
-
}): Promise<UpdatedTestCase[]>;
|
|
23
|
-
export declare function getAppendCreateTestBlockCompletion({ testFiles, pageFiles, testCase, testFilePath, trace, }: {
|
|
24
|
-
trace?: TraceClient;
|
|
25
|
-
pageFiles?: string;
|
|
26
|
-
testFiles: string;
|
|
27
|
-
testCase: TestCase;
|
|
28
|
-
testFilePath: string;
|
|
29
|
-
}): Promise<string>;
|
|
30
|
-
export declare function appendCreateTestBlock({ testCase, file, trace, validateTypes, }: {
|
|
31
|
-
testCase: TestCase;
|
|
32
|
-
file: string;
|
|
33
|
-
trace?: TraceClient;
|
|
34
|
-
validateTypes?: boolean;
|
|
35
|
-
}): Promise<UpdatedTestCase[]>;
|
|
36
|
-
//# sourceMappingURL=update-flow.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"update-flow.d.ts","sourceRoot":"","sources":["../../../src/agent/codegen/update-flow.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,WAAW,EACZ,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EACV,QAAQ,EACR,oBAAoB,EACrB,MAAM,4BAA4B,CAAC;AAEpC,OAAO,EAAE,0BAA0B,EAAE,MAAM,4BAA4B,CAAC;AAcxE,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAQtD,wBAAsB,2BAA2B,CAAC,EAChD,QAAQ,EACR,eAAe,EACf,SAAS,EACT,SAAS,EACT,YAAY,EACZ,OAAO,EACP,KAAK,GACN,EAAE;IACD,QAAQ,EAAE,QAAQ,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,eAAe,EAAE,MAAM,CAAC;IACxB,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,OAAO,CAAC,EAAE,oBAAoB,CAAC;CAChC,GAAG,OAAO,CAAC;IACV,MAAM,EAAE,0BAA0B,EAAE,CAAC;IACrC,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,UAAU,EAAE,CAAC;CAC3B,CAAC,CAkDD;AAED,wBAAsB,UAAU,CAAC,EAC/B,QAAQ,EACR,IAAI,EACJ,KAAK,GACN,EAAE;IACD,QAAQ,EAAE,QAAQ,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,WAAW,CAAC;CACrB,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC,CA8E7B;AAED,wBAAsB,kCAAkC,CAAC,EACvD,SAAS,EACT,SAAS,EACT,QAAQ,EACR,YAAY,EACZ,KAAK,GACN,EAAE;IACD,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,QAAQ,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;CACtB,mBAkFA;AAED,wBAAsB,qBAAqB,CAAC,EAC1C,QAAQ,EACR,IAAI,EACJ,KAAK,EACL,aAAoB,GACrB,EAAE;IACD,QAAQ,EAAE,QAAQ,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC,CA8C7B"}
|
|
@@ -1,259 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.getUpdateTestCodeCompletion = getUpdateTestCodeCompletion;
|
|
7
|
-
exports.updateTest = updateTest;
|
|
8
|
-
exports.getAppendCreateTestBlockCompletion = getAppendCreateTestBlockCompletion;
|
|
9
|
-
exports.appendCreateTestBlock = appendCreateTestBlock;
|
|
10
|
-
const llm_1 = require("@empiricalrun/llm");
|
|
11
|
-
const fs_1 = __importDefault(require("fs"));
|
|
12
|
-
const logger_1 = require("../../bin/logger");
|
|
13
|
-
const context_1 = require("../../bin/utils/context");
|
|
14
|
-
const fs_2 = require("../../bin/utils/fs");
|
|
15
|
-
const web_1 = require("../../bin/utils/platform/web");
|
|
16
|
-
const constants_1 = require("../../constants");
|
|
17
|
-
const promptTemplate_0 = "{{#section \"system\"}}\n\nYou are a software test engineer who is given a task to update a test case. You will be provided with steps of a test\ncase scenario and you are given a snippet with interface await createTest(task, playwright_page_instance).\n\nYou need to analyze the request and place createTest snippet at the correct position and pass on the steps to this\n`createTest` method with the correct page instance.\n\nYou will be provided with current tests, fixtures and page object models for you to use and update code as per the\ntask provided to you.\nYou need to respond with file path and updated code block inside the file.\n\nHere is the list of current tests and fixtures:\n\n{{testFiles}}\n\n\nHere is the list of current page object models:\n\n{{pageFiles}}\n{{/section}}\n\n\n{{#section \"user\"}}\nFollowing is the test scenario for which you need to update the test:\n\ntest name:\n{{scenarioName}}\n\nTask:\n{{scenarioSteps}}\n\nFollow these steps to complete the task:\n\n1. Determine the task's intent:\n- The default intent is **\"add steps\"**.\n- If the task explicitly mentions (using words like \"replace\", \"remove\", \"delete\") that existing test steps should\nbe replaced or deleted, the intent is **\"update steps\"**. Identify the specific steps to be replaced or removed.\n- Do not assume that providing new or different steps implies an intent to update or replace existing steps. Unless\nthe task explicitly instructs to replace or remove existing code, interpret the intent as adding new steps to the\nexisting test.\n\n2. Identify the test block that requires updating.\n\n3. Place the `createTest` snippet:\n- Insert the `createTest` snippet at the location determined by the task, and pass the Playwright page instance.\n- If the intent is \"add\", do not alter the existing test code; simply append the `createTest` snippet based on any\nprovided location hints.\n- If the task includes location hints that don't match steps within the test, check dependent methods called from\nthe test for the update.\n- If no location hint is provided, place the `createTest` snippet at the end of the test block.\n- Even if the task includes steps that overlap with or are similar to existing steps, do not modify the existing\ncode. Unless the task explicitly instructs to replace or remove existing code, interpret the intent as adding new\nsteps to the existing test.\n\n4. Strip location hints from the task:\n- Remove any location hints (e.g., \"replace the current assertion and\") before passing the task to the `createTest`\nmethod.\n- The task passed into `createTest` should not contain any location hints. It should only contain actions that\nare required to be performed.\n- For example, if the original task: \"replace the current assertion and add a new assertion\" should be transformed to\n\"add a new assertion\" before passing it to the `createTest` method. This is the \"task_without_location_hints\"\n\nSubmission Guidelines:\n\n- Focus only on the provided test case and any related page object model methods used in the test.\n- Do not modify or add code within the `createTest` snippet.\n- Do not update or modify any other code apart from adding `createTest` code snippet.\n- Since the response will be used for search-and-replace operations, always provide the immediate parent AST node\nfor any code updates.\n- Include the full test block if any part of it is updated, preserving all unchanged code.\n- Do not use markdown syntax or backticks.\n- Respond using the following XML format:\n<reason_for_intent></reason_for_intent>\n<intent></intent>\n<location_of_update></location_of_update>\n<task_without_location_hints></task_without_location_hints>\n<file_path></file_path>\n<old_code_block></old_code_block>\n<new_code_block></new_code_block>\n<change></change>\n\n- Each `<old_code_block>` and `<new_code_block>` should contain only one test block or page object model method\n definition. Provide separate blocks for multiple updates.\n- The `<change></change>` tag should also mention the file path being updated.\n- There should be only one `createTest` block in the `new_code_block`. The `createTest` method should be passed\nwith entire task. Do not split the task while forwarding it to `createTest`.\n- `<new_code_block>` code snippet should be syntactically correct.\n - The code_block should not contain any import statements.\n{{/section}}";
|
|
18
|
-
const promptTemplate_1 = "{{#section \"system\"}}\nYou are a software test engineer who is given an objective to update test basis the task provided.\nYou will be provided with a test name, test and test file path.\n\nYou will be provided with current tests, fixtures and page object models for you to use and update code as per the task\nprovided to you. You need to respond with file path and updated code block inside the file.\n\nBefore responding you need to ensure that the code change is minimal and the change is reusable across tests. You need\nto ensure the code follows DRY principle.\n\nHere is the list of current tests and fixtures:\n\n{{testFiles}}\n\n\nHere is the list of current page object models:\n\n{{pageFiles}}\n\n{{/section}}\n\n{{#section \"user\"}}\nFollowing are the test details and the task to complete your objective:\nTest name:\n{{scenarioName}}\n\nTest case:\n{{currentScenarioCodeBlock}}\n\nTask:\n{{scenarioSteps}}\n\nIn order to execute the task:\n- Think step by step and first identify current test block which needs update and the methods which the current test\nblock depend on.\n- The task will demand changes in the current test case or the methods it depend on. Based on the task, identify list of\nfile paths which need change, the reason for change and the code change they need.\n- Next make changes to code blocks in each file paths.\n\n------\n\nFollow these instructions before responding with output:\n- Read the code line by line and ensure that achieve the task provided to you\n- Read the dependencies of the code block by scanning through file paths and file provided to you. refer the same file\npath while responding with output.\n- Focus only on the test case provided and associated JS methods called from the test case.\n- Since the response will be used to search and replace blocks, always respond with output which includes the full\nlexical scope surrounding the modified code.\n- If there are any updates inside test code block, ensure responding with full test block with unchanged code as well\n- Each code block should contain edits to only one code block in file path\n- DO NOT respond with any backticks or markdown syntax\n- Respond only with file path where the code block to be updated is present, old code block, new code block and a one\nliner reason for the change\n- Respond with <file_path></file_path>, <old_code_block></old_code_block>, <new_code_block></new_code_block> and\n<change></change> as xml tags\n- The reason for change should adhere to coding principles provided and review if the updated code is present in the\nfile path mentioned\n- The code change should belong to the right file path\n- The response must start with <file_path>\n {{/section}}";
|
|
19
|
-
const test_update_feedback_1 = require("./test-update-feedback");
|
|
20
|
-
const utils_1 = require("./utils");
|
|
21
|
-
async function getUpdateTestCodeCompletion({ testCase, testFileContent, testFiles, pageFiles, testFilePath, options, trace, }) {
|
|
22
|
-
const promptSpan = trace?.span({
|
|
23
|
-
name: "update-scenario-prompt",
|
|
24
|
-
});
|
|
25
|
-
// if describe blocks are present, we need to add them to the scenario name
|
|
26
|
-
// e.g. describe block: login ---> login with email
|
|
27
|
-
// this is help LLM navigate to the right test block
|
|
28
|
-
const scenarioName = (0, web_1.buildTestNamePrompt)({
|
|
29
|
-
testName: testCase.name,
|
|
30
|
-
suites: testCase.suites,
|
|
31
|
-
});
|
|
32
|
-
const { testBlock: currentScenarioCodeBlock } = (0, web_1.getTypescriptTestBlock)({
|
|
33
|
-
scenarioName: testCase?.name,
|
|
34
|
-
content: testFileContent,
|
|
35
|
-
suites: testCase?.suites || [],
|
|
36
|
-
});
|
|
37
|
-
const prompt = (0, llm_1.compilePrompt)(promptTemplate_1, {
|
|
38
|
-
testFiles: testFiles,
|
|
39
|
-
pageFiles: pageFiles,
|
|
40
|
-
scenarioName,
|
|
41
|
-
scenarioSteps: testCase.steps.join("\n"),
|
|
42
|
-
scenarioFile: testFilePath,
|
|
43
|
-
currentScenarioCodeBlock,
|
|
44
|
-
});
|
|
45
|
-
const llm = new llm_1.LLM({
|
|
46
|
-
trace: promptSpan,
|
|
47
|
-
provider: "anthropic",
|
|
48
|
-
defaultModel: "claude-3-5-sonnet-20240620",
|
|
49
|
-
providerApiKey: constants_1.MODEL_API_KEYS["anthropic"],
|
|
50
|
-
});
|
|
51
|
-
const firstShotMessage = await llm.createChatCompletion({
|
|
52
|
-
messages: prompt,
|
|
53
|
-
modelParameters: {
|
|
54
|
-
...constants_1.DEFAULT_MODEL_PARAMETERS,
|
|
55
|
-
...options?.modelParameters,
|
|
56
|
-
temperature: 0,
|
|
57
|
-
},
|
|
58
|
-
});
|
|
59
|
-
let response = firstShotMessage?.content || "";
|
|
60
|
-
const fileChanges = (0, utils_1.extractTestUpdates)(response);
|
|
61
|
-
promptSpan?.end({ output: fileChanges });
|
|
62
|
-
return {
|
|
63
|
-
fileChanges,
|
|
64
|
-
prompt: prompt,
|
|
65
|
-
agentResponse: response,
|
|
66
|
-
};
|
|
67
|
-
}
|
|
68
|
-
async function updateTest({ testCase, file, trace, }) {
|
|
69
|
-
const logger = new logger_1.CustomLogger({ useReporter: true });
|
|
70
|
-
const context = await (0, context_1.contextForGeneration)(file);
|
|
71
|
-
const { codePrompt, pomPrompt, nonSpecFilePrompt, testFileContent } = context;
|
|
72
|
-
const generatedTestCases = [];
|
|
73
|
-
logger.logEmptyLine();
|
|
74
|
-
const request = {
|
|
75
|
-
testCase,
|
|
76
|
-
testFileContent,
|
|
77
|
-
testFiles: codePrompt,
|
|
78
|
-
pageFiles: pomPrompt,
|
|
79
|
-
testFilePath: file,
|
|
80
|
-
};
|
|
81
|
-
const updateTestSpan = trace?.span({
|
|
82
|
-
name: "update-test",
|
|
83
|
-
input: request,
|
|
84
|
-
});
|
|
85
|
-
const { fileChanges, prompt, agentResponse } = await getUpdateTestCodeCompletion({
|
|
86
|
-
...request,
|
|
87
|
-
trace: updateTestSpan,
|
|
88
|
-
});
|
|
89
|
-
console.log(`fileChanges ${testCase.steps.join("")}`, fileChanges);
|
|
90
|
-
const fileUpdateResponses = await (0, utils_1.applyFileChanges)({
|
|
91
|
-
trace: updateTestSpan,
|
|
92
|
-
testCase,
|
|
93
|
-
fileChanges,
|
|
94
|
-
logger,
|
|
95
|
-
pomPrompt: pomPrompt,
|
|
96
|
-
nonSpecFilePrompt: nonSpecFilePrompt,
|
|
97
|
-
});
|
|
98
|
-
const errorResponses = fileUpdateResponses.filter((f) => f?.error);
|
|
99
|
-
if (errorResponses.length > 0) {
|
|
100
|
-
const filteredFileChanges = await (0, test_update_feedback_1.applyTestUpdateFeedbacks)({
|
|
101
|
-
trace: updateTestSpan,
|
|
102
|
-
oldPrompt: prompt,
|
|
103
|
-
agentResponse,
|
|
104
|
-
feedbacks: errorResponses.map((e) => ({
|
|
105
|
-
filePath: e?.filePath,
|
|
106
|
-
errorMessage: e?.errorMessage,
|
|
107
|
-
})),
|
|
108
|
-
});
|
|
109
|
-
await (0, utils_1.applyFileChanges)({
|
|
110
|
-
trace: updateTestSpan,
|
|
111
|
-
testCase,
|
|
112
|
-
fileChanges: filteredFileChanges,
|
|
113
|
-
logger,
|
|
114
|
-
pomPrompt: pomPrompt,
|
|
115
|
-
nonSpecFilePrompt: nonSpecFilePrompt,
|
|
116
|
-
});
|
|
117
|
-
}
|
|
118
|
-
await (0, utils_1.validateTypesAndFormatCode)({
|
|
119
|
-
validateTypes: true,
|
|
120
|
-
trace: updateTestSpan,
|
|
121
|
-
testCase,
|
|
122
|
-
filePaths: fileChanges.map((f) => f.filePath),
|
|
123
|
-
logger,
|
|
124
|
-
pomPrompt: pomPrompt,
|
|
125
|
-
nonSpecFilePrompt: nonSpecFilePrompt,
|
|
126
|
-
});
|
|
127
|
-
logger.success("Test generated successfully!");
|
|
128
|
-
if (trace) {
|
|
129
|
-
logger.log(`View [trace](${trace.getTraceUrl()})`);
|
|
130
|
-
}
|
|
131
|
-
generatedTestCases.push({
|
|
132
|
-
...testCase,
|
|
133
|
-
updatedFiles: fileChanges.map((f) => f.filePath),
|
|
134
|
-
});
|
|
135
|
-
updateTestSpan?.end({ output: { fileChanges } });
|
|
136
|
-
await (0, llm_1.flushAllTraces)();
|
|
137
|
-
return generatedTestCases;
|
|
138
|
-
}
|
|
139
|
-
async function getAppendCreateTestBlockCompletion({ testFiles, pageFiles, testCase, testFilePath, trace, }) {
|
|
140
|
-
const appendCreateTestSpan = trace?.span({
|
|
141
|
-
name: "append-create-test-block",
|
|
142
|
-
input: {
|
|
143
|
-
testCase,
|
|
144
|
-
pageFiles,
|
|
145
|
-
testFiles,
|
|
146
|
-
testFilePath,
|
|
147
|
-
},
|
|
148
|
-
});
|
|
149
|
-
const instruction = (0, llm_1.compilePrompt)(promptTemplate_0, {
|
|
150
|
-
testFiles: testFiles,
|
|
151
|
-
pageFiles: pageFiles,
|
|
152
|
-
scenarioName: testCase.name,
|
|
153
|
-
scenarioSteps: testCase.steps.join("\n"),
|
|
154
|
-
scenarioFile: testFilePath,
|
|
155
|
-
});
|
|
156
|
-
const [userInstruction] = instruction.filter((s) => s.role === "user");
|
|
157
|
-
const [systemInstruction] = instruction.filter((s) => s.role === "system");
|
|
158
|
-
userInstruction.content = `${systemInstruction?.content}
|
|
159
|
-
|
|
160
|
-
${userInstruction?.content}
|
|
161
|
-
`;
|
|
162
|
-
const llm = new llm_1.LLM({
|
|
163
|
-
trace: appendCreateTestSpan,
|
|
164
|
-
provider: "anthropic",
|
|
165
|
-
defaultModel: "claude-3-5-sonnet-latest",
|
|
166
|
-
providerApiKey: constants_1.MODEL_API_KEYS["anthropic"],
|
|
167
|
-
});
|
|
168
|
-
const chatCompletionParams = {
|
|
169
|
-
messages: [userInstruction],
|
|
170
|
-
modelParameters: {
|
|
171
|
-
...constants_1.DEFAULT_MODEL_PARAMETERS,
|
|
172
|
-
},
|
|
173
|
-
};
|
|
174
|
-
let firstShotMessage = await llm.createChatCompletion(chatCompletionParams);
|
|
175
|
-
let fileChanges = (0, utils_1.extractAppendTestUpdates)(firstShotMessage?.content);
|
|
176
|
-
// retry once if there is incorrect response
|
|
177
|
-
const feedbacks = [];
|
|
178
|
-
if (!fileChanges[0]?.newCode) {
|
|
179
|
-
feedbacks.push("No code found in the response");
|
|
180
|
-
}
|
|
181
|
-
if (fileChanges[0]?.newCode && !(0, web_1.isSyntaxValid)(fileChanges[0]?.newCode)) {
|
|
182
|
-
feedbacks.push("- Syntax is invalid. Please fix the JS syntax. Remove any imports if present.");
|
|
183
|
-
}
|
|
184
|
-
if (fileChanges[0]?.newCode &&
|
|
185
|
-
!fileChanges[0]?.newCode.includes("createTest(")) {
|
|
186
|
-
feedbacks.push("- Usage of createTest method is missing. Follow the guidelines provided to you.");
|
|
187
|
-
}
|
|
188
|
-
if (!fileChanges[0]?.newCode ||
|
|
189
|
-
!(0, web_1.isSyntaxValid)(fileChanges[0]?.newCode) ||
|
|
190
|
-
!fileChanges[0]?.newCode.includes("createTest(")) {
|
|
191
|
-
const messages = chatCompletionParams.messages;
|
|
192
|
-
messages.push({
|
|
193
|
-
role: "assistant",
|
|
194
|
-
content: firstShotMessage?.content,
|
|
195
|
-
});
|
|
196
|
-
messages.push({
|
|
197
|
-
role: "user",
|
|
198
|
-
content: `
|
|
199
|
-
There are a few feedbacks on the previous output:
|
|
200
|
-
${feedbacks.join("\n")}
|
|
201
|
-
|
|
202
|
-
-----
|
|
203
|
-
|
|
204
|
-
Respond with the same xml format which was originally expected.
|
|
205
|
-
`,
|
|
206
|
-
});
|
|
207
|
-
firstShotMessage = await llm.createChatCompletion(chatCompletionParams);
|
|
208
|
-
}
|
|
209
|
-
let response = firstShotMessage?.content || "";
|
|
210
|
-
appendCreateTestSpan?.end({ output: response });
|
|
211
|
-
return response;
|
|
212
|
-
}
|
|
213
|
-
async function appendCreateTestBlock({ testCase, file, trace, validateTypes = true, }) {
|
|
214
|
-
const logger = new logger_1.CustomLogger({ useReporter: false });
|
|
215
|
-
logger.log("Appending create test block");
|
|
216
|
-
const context = await (0, context_1.contextForGeneration)(file);
|
|
217
|
-
const scenarioFileContent = fs_1.default.readFileSync(file, "utf-8");
|
|
218
|
-
const testCodePrompt = (0, fs_2.convertFileContentsToString)([
|
|
219
|
-
{
|
|
220
|
-
filePath: file,
|
|
221
|
-
content: scenarioFileContent,
|
|
222
|
-
},
|
|
223
|
-
]);
|
|
224
|
-
const { pomPrompt, nonSpecFilePrompt } = context;
|
|
225
|
-
const generatedTestCases = [];
|
|
226
|
-
const appendCreateTestResp = await getAppendCreateTestBlockCompletion({
|
|
227
|
-
testCase,
|
|
228
|
-
testFilePath: file,
|
|
229
|
-
trace,
|
|
230
|
-
pageFiles: pomPrompt,
|
|
231
|
-
testFiles: testCodePrompt,
|
|
232
|
-
});
|
|
233
|
-
const fileChanges = (0, utils_1.extractAppendTestUpdates)(appendCreateTestResp);
|
|
234
|
-
await (0, utils_1.applyFileChanges)({
|
|
235
|
-
trace,
|
|
236
|
-
testCase,
|
|
237
|
-
fileChanges,
|
|
238
|
-
logger,
|
|
239
|
-
pomPrompt: pomPrompt,
|
|
240
|
-
nonSpecFilePrompt: nonSpecFilePrompt,
|
|
241
|
-
});
|
|
242
|
-
await (0, utils_1.validateTypesAndFormatCode)({
|
|
243
|
-
trace,
|
|
244
|
-
testCase,
|
|
245
|
-
filePaths: fileChanges.map((f) => f.filePath),
|
|
246
|
-
logger,
|
|
247
|
-
pomPrompt: pomPrompt,
|
|
248
|
-
nonSpecFilePrompt: nonSpecFilePrompt,
|
|
249
|
-
validateTypes,
|
|
250
|
-
});
|
|
251
|
-
if (trace) {
|
|
252
|
-
logger.log(`View [trace](${trace.getTraceUrl()})`);
|
|
253
|
-
}
|
|
254
|
-
generatedTestCases.push({
|
|
255
|
-
...testCase,
|
|
256
|
-
updatedFiles: fileChanges.map((f) => f.filePath),
|
|
257
|
-
});
|
|
258
|
-
return generatedTestCases;
|
|
259
|
-
}
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import { TraceClient } from "@empiricalrun/llm";
|
|
2
|
-
export declare function generateSkillUsageCode({ task, sampleUsageMethod, scopeVariablesMapStr, pageVariableName, skillMethodDefinition, trace, }: {
|
|
3
|
-
task: string;
|
|
4
|
-
sampleUsageMethod: string;
|
|
5
|
-
scopeVariablesMapStr: string;
|
|
6
|
-
pageVariableName: string;
|
|
7
|
-
skillMethodDefinition: string;
|
|
8
|
-
importPathForSkill: string;
|
|
9
|
-
trace?: TraceClient;
|
|
10
|
-
}): Promise<string>;
|
|
11
|
-
//# sourceMappingURL=use-skill.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"use-skill.d.ts","sourceRoot":"","sources":["../../../src/agent/codegen/use-skill.ts"],"names":[],"mappings":"AAAA,OAAO,EAAsB,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAWpE,wBAAsB,sBAAsB,CAAC,EAC3C,IAAI,EACJ,iBAAiB,EACjB,oBAAoB,EACpB,gBAAgB,EAChB,qBAAqB,EACrB,KAAK,GACN,EAAE;IACD,IAAI,EAAE,MAAM,CAAC;IACb,iBAAiB,EAAE,MAAM,CAAC;IAC1B,oBAAoB,EAAE,MAAM,CAAC;IAC7B,gBAAgB,EAAE,MAAM,CAAC;IACzB,qBAAqB,EAAE,MAAM,CAAC;IAC9B,kBAAkB,EAAE,MAAM,CAAC;IAC3B,KAAK,CAAC,EAAE,WAAW,CAAC;CACrB,mBA6CA"}
|
|
@@ -1,53 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.generateSkillUsageCode = generateSkillUsageCode;
|
|
4
|
-
const llm_1 = require("@empiricalrun/llm");
|
|
5
|
-
const logger_1 = require("../../bin/logger");
|
|
6
|
-
const constants_1 = require("../../constants");
|
|
7
|
-
const promptTemplate_0 = "{{#section \"system\"}}\nYou are given a sample method usage example, task and object variables available in the scope.\nBased on the task and object variables you need to generate the correct method call to be used in the scope.\n\nYou will also be provided with method definition and interface. Based on the definition you need to ensure creating\nvariables if the method has return value.\n\nFor page object use variable \"{{pageVariableName}}\"\n\n{{/section}}\n\n{{#section \"user\"}}\nTask:\n{{task}}\n\nMethod usage example:\n{{sampleUsageMethod}}\n------\n\nMethod definition:\n\n{{skillMethodDefinition}}\n\n------\nVariables object:\n{{scopeVariablesMapStr}}\n\nVariables object contain variable name and respective value available in scope.\n\nBefore responding ensure following the instructions:\n- Based on the task, write code using the method to achieve the task. If there are any return value of any methods,\ncreate `const` variables and assign the return values. The variable names should be inspired by the task assigned to you\n- Follow DRY principles and all good practices for typescript\n- Extract object properties and rename them if the return values is an object\n- Do not respond with any backticks or markdown syntax\n\n{{/section}}";
|
|
8
|
-
async function generateSkillUsageCode({ task, sampleUsageMethod, scopeVariablesMapStr, pageVariableName, skillMethodDefinition, trace, }) {
|
|
9
|
-
const logger = new logger_1.CustomLogger();
|
|
10
|
-
logger.log(`Generating code using skill usage example: ${sampleUsageMethod}`);
|
|
11
|
-
const skillUsageSpan = trace?.span({
|
|
12
|
-
name: "skill-usage",
|
|
13
|
-
input: {
|
|
14
|
-
task,
|
|
15
|
-
sampleUsageMethod,
|
|
16
|
-
scopeVariablesMapStr,
|
|
17
|
-
pageVariableName,
|
|
18
|
-
},
|
|
19
|
-
});
|
|
20
|
-
const promptSpan = skillUsageSpan?.span({
|
|
21
|
-
name: "apply-skills-prompt",
|
|
22
|
-
});
|
|
23
|
-
const prompt = (0, llm_1.compilePrompt)(promptTemplate_0, {
|
|
24
|
-
task,
|
|
25
|
-
sampleUsageMethod,
|
|
26
|
-
scopeVariablesMapStr,
|
|
27
|
-
pageVariableName,
|
|
28
|
-
skillMethodDefinition,
|
|
29
|
-
});
|
|
30
|
-
promptSpan?.end({ output: prompt });
|
|
31
|
-
const llm = new llm_1.LLM({
|
|
32
|
-
trace: skillUsageSpan,
|
|
33
|
-
provider: constants_1.DEFAULT_MODEL_PROVIDER,
|
|
34
|
-
defaultModel: constants_1.DEFAULT_MODEL,
|
|
35
|
-
providerApiKey: constants_1.MODEL_API_KEYS[constants_1.DEFAULT_MODEL_PROVIDER],
|
|
36
|
-
});
|
|
37
|
-
const firstShotMessage = await llm.createChatCompletion({
|
|
38
|
-
trace: skillUsageSpan,
|
|
39
|
-
messages: prompt,
|
|
40
|
-
traceName: "generate-skill-usage-code",
|
|
41
|
-
modelParameters: {
|
|
42
|
-
...constants_1.DEFAULT_MODEL_PARAMETERS,
|
|
43
|
-
},
|
|
44
|
-
});
|
|
45
|
-
let response = firstShotMessage?.content || "";
|
|
46
|
-
skillUsageSpan?.end({
|
|
47
|
-
output: {
|
|
48
|
-
code: response,
|
|
49
|
-
},
|
|
50
|
-
});
|
|
51
|
-
console.log(`generated usage code`, response);
|
|
52
|
-
return response;
|
|
53
|
-
}
|
|
@@ -1,110 +0,0 @@
|
|
|
1
|
-
import { TraceClient } from "@empiricalrun/llm";
|
|
2
|
-
import type { TestCase } from "@empiricalrun/shared-types";
|
|
3
|
-
import { CustomLogger } from "../../bin/logger";
|
|
4
|
-
import { CodeUpdate, CreateTestCodeUpdate, FileUpdateResponse } from "./types";
|
|
5
|
-
/**
|
|
6
|
-
*
|
|
7
|
-
* method to extract file path and code updates for the LLM response of update flow
|
|
8
|
-
* @export
|
|
9
|
-
* @param {string} input
|
|
10
|
-
* @return {*} {({
|
|
11
|
-
* filePath: string | undefined;
|
|
12
|
-
* oldCode: string | undefined;
|
|
13
|
-
* newCode: string | undefined;
|
|
14
|
-
* reason: string | undefined;
|
|
15
|
-
* }[])}
|
|
16
|
-
*/
|
|
17
|
-
export declare function extractTestUpdates(input: string): CodeUpdate[];
|
|
18
|
-
/**
|
|
19
|
-
*
|
|
20
|
-
* method to extract file path and code updates for the LLM response of create flow
|
|
21
|
-
* @export
|
|
22
|
-
* @param {string} input
|
|
23
|
-
* @return {*} {({
|
|
24
|
-
* filePath: string | undefined;
|
|
25
|
-
* code: string | undefined;
|
|
26
|
-
* reason: string | undefined;
|
|
27
|
-
* }[])}
|
|
28
|
-
*/
|
|
29
|
-
export declare function extractCreateTestUpdates(input: string): CreateTestCodeUpdate[];
|
|
30
|
-
/**
|
|
31
|
-
*
|
|
32
|
-
* method to extract append create test updates
|
|
33
|
-
* @export
|
|
34
|
-
* @param {string} input
|
|
35
|
-
* @return {*} {({
|
|
36
|
-
* intent: string | undefined,
|
|
37
|
-
* updateLocation: string | undefined,
|
|
38
|
-
* filePath: string | undefined;
|
|
39
|
-
* oldCode: string | undefined;
|
|
40
|
-
* newCode: string | undefined;
|
|
41
|
-
* reason: string | undefined;
|
|
42
|
-
* }[])}
|
|
43
|
-
*/
|
|
44
|
-
export declare function extractAppendTestUpdates(input: string): {
|
|
45
|
-
intent: string | undefined;
|
|
46
|
-
updateLocation: string | undefined;
|
|
47
|
-
filePath: string | undefined;
|
|
48
|
-
oldCode: string | undefined;
|
|
49
|
-
newCode: string | undefined;
|
|
50
|
-
reason: string | undefined;
|
|
51
|
-
}[];
|
|
52
|
-
export declare function extractTestStepsSuggestions(input: string): {
|
|
53
|
-
testStep: string;
|
|
54
|
-
filePath: string;
|
|
55
|
-
usageExample: string;
|
|
56
|
-
reason: string;
|
|
57
|
-
methodName: string;
|
|
58
|
-
}[];
|
|
59
|
-
export declare function validateTypesAndFormatCode({ validateTypes, trace, testCase, filePaths, logger, pomPrompt, nonSpecFilePrompt, }: {
|
|
60
|
-
validateTypes?: boolean;
|
|
61
|
-
trace?: TraceClient;
|
|
62
|
-
testCase: TestCase;
|
|
63
|
-
filePaths: (string | undefined)[];
|
|
64
|
-
logger?: CustomLogger;
|
|
65
|
-
pomPrompt?: string;
|
|
66
|
-
nonSpecFilePrompt?: string;
|
|
67
|
-
}): Promise<void>;
|
|
68
|
-
export declare function applyFileChangesUsingStrReplace({ trace, fileChanges, logger, }: {
|
|
69
|
-
trace?: TraceClient;
|
|
70
|
-
fileChanges: CodeUpdate[];
|
|
71
|
-
logger?: CustomLogger;
|
|
72
|
-
}): Promise<FileUpdateResponse[]>;
|
|
73
|
-
export declare function applyFileChangesForCreateTest({ trace, fileChanges, }: {
|
|
74
|
-
trace?: TraceClient;
|
|
75
|
-
fileChanges: CreateTestCodeUpdate[];
|
|
76
|
-
}): Promise<void>;
|
|
77
|
-
export declare function searchAndReplaceCode({ logger, fileChange, }: {
|
|
78
|
-
fileChange: {
|
|
79
|
-
filePath: string | undefined;
|
|
80
|
-
oldCode: string | undefined;
|
|
81
|
-
newCode: string | undefined;
|
|
82
|
-
reason: string | undefined;
|
|
83
|
-
};
|
|
84
|
-
logger?: CustomLogger;
|
|
85
|
-
}): Promise<{
|
|
86
|
-
result: {
|
|
87
|
-
error: boolean;
|
|
88
|
-
errorMessage: string;
|
|
89
|
-
filePath: string;
|
|
90
|
-
};
|
|
91
|
-
updatedContent: string;
|
|
92
|
-
}>;
|
|
93
|
-
export declare function applyFileChanges({ trace, testCase, fileChanges, logger, }: {
|
|
94
|
-
trace?: TraceClient;
|
|
95
|
-
testCase: TestCase;
|
|
96
|
-
fileChanges: {
|
|
97
|
-
filePath: string | undefined;
|
|
98
|
-
oldCode: string | undefined;
|
|
99
|
-
newCode: string | undefined;
|
|
100
|
-
reason: string | undefined;
|
|
101
|
-
}[];
|
|
102
|
-
logger?: CustomLogger;
|
|
103
|
-
pomPrompt?: string;
|
|
104
|
-
nonSpecFilePrompt?: string;
|
|
105
|
-
}): Promise<{
|
|
106
|
-
error: boolean;
|
|
107
|
-
errorMessage: string;
|
|
108
|
-
filePath: string;
|
|
109
|
-
}[]>;
|
|
110
|
-
//# sourceMappingURL=utils.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/agent/codegen/utils.ts"],"names":[],"mappings":"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"}
|