@empiricalrun/test-gen 0.73.0 → 0.74.0
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 +96 -0
- package/dist/actions/utils/index.d.ts.map +1 -1
- package/dist/actions/utils/index.js +1 -2
- package/dist/agent/browsing/index.d.ts.map +1 -1
- package/dist/agent/browsing/index.js +9 -7
- package/dist/agent/browsing/utils.d.ts.map +1 -1
- package/dist/agent/browsing/utils.js +3 -4
- package/dist/agent/chat/agent-loop.d.ts +7 -8
- package/dist/agent/chat/agent-loop.d.ts.map +1 -1
- package/dist/agent/chat/agent-loop.js +14 -17
- package/dist/agent/chat/exports.d.ts +5 -4
- package/dist/agent/chat/exports.d.ts.map +1 -1
- package/dist/agent/chat/exports.js +9 -4
- package/dist/agent/chat/filesystem-cache.d.ts +12 -0
- package/dist/agent/chat/filesystem-cache.d.ts.map +1 -0
- package/dist/agent/chat/filesystem-cache.js +101 -0
- package/dist/agent/chat/index.d.ts +4 -1
- package/dist/agent/chat/index.d.ts.map +1 -1
- package/dist/agent/chat/index.js +44 -22
- package/dist/agent/chat/models.d.ts +2 -1
- package/dist/agent/chat/models.d.ts.map +1 -1
- package/dist/agent/chat/models.js +25 -3
- package/dist/agent/chat/prompt/index.d.ts +3 -1
- package/dist/agent/chat/prompt/index.d.ts.map +1 -1
- package/dist/agent/chat/prompt/index.js +77 -2
- package/dist/agent/chat/prompt/repo.d.ts.map +1 -1
- package/dist/agent/chat/prompt/repo.js +1 -0
- package/dist/agent/chat/state.d.ts +6 -5
- package/dist/agent/chat/state.d.ts.map +1 -1
- package/dist/agent/chat/state.js +35 -5
- package/dist/agent/chat/utils.d.ts +1 -0
- package/dist/agent/chat/utils.d.ts.map +1 -1
- package/dist/agent/chat/utils.js +16 -3
- package/dist/agent/cua/index.js +1 -1
- package/dist/agent/cua/model.js +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 +0 -1
- package/dist/agent/master/browser-tests/fixtures.d.ts.map +1 -1
- package/dist/agent/master/browser-tests/fixtures.js +0 -1
- package/dist/agent/master/element-annotation.d.ts.map +1 -1
- package/dist/agent/master/element-annotation.js +1 -2
- package/dist/agent/master/execute-browser-action.d.ts.map +1 -1
- package/dist/agent/master/execute-browser-action.js +8 -6
- package/dist/agent/master/icon-descriptor/index.js +2 -2
- package/dist/agent/master/next-action.js +1 -1
- package/dist/agent/master/planner.js +1 -1
- package/dist/agent/master/scroller.js +2 -2
- package/dist/agent/master/with-hints.d.ts.map +1 -1
- package/dist/agent/master/with-hints.js +6 -5
- package/dist/agent/planner/run-time-planner.js +1 -1
- package/dist/agent/planner/run.d.ts.map +1 -1
- package/dist/agent/planner/run.js +4 -2
- package/dist/auth/cli-auth.js +1 -1
- package/dist/auth/token-store.d.ts.map +1 -1
- package/dist/auth/token-store.js +4 -6
- package/dist/bin/index.js +30 -163
- package/dist/bin/utils/context.js +1 -1
- package/dist/bin/utils/index.d.ts +0 -12
- package/dist/bin/utils/index.d.ts.map +1 -1
- package/dist/bin/utils/index.js +0 -70
- 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 +7 -5
- package/dist/bin/utils/scenarios/index.d.ts +11 -3
- package/dist/bin/utils/scenarios/index.d.ts.map +1 -1
- package/dist/browser-injected-scripts/annotate-elements.spec.js +0 -5
- package/dist/browser-injected-scripts/annotate-elements.spec.ts +0 -5
- package/dist/dashboard/client.d.ts +2 -2
- package/dist/dashboard/client.d.ts.map +1 -1
- package/dist/dashboard/client.js +4 -1
- package/dist/file-info/adapters/file-system/index.d.ts +9 -0
- package/dist/file-info/adapters/file-system/index.d.ts.map +1 -0
- package/dist/file-info/adapters/file-system/index.js +25 -0
- package/dist/file-info/adapters/file-system/reader.d.ts +6 -0
- package/dist/file-info/adapters/file-system/reader.d.ts.map +1 -0
- package/dist/file-info/{file-system.js → adapters/file-system/reader.js} +16 -0
- package/dist/file-info/adapters/github/index.d.ts +11 -0
- package/dist/file-info/adapters/github/index.d.ts.map +1 -0
- package/dist/file-info/adapters/github/index.js +29 -0
- package/dist/file-info/adapters/github/reader.d.ts +16 -0
- package/dist/file-info/adapters/github/reader.d.ts.map +1 -0
- package/dist/file-info/adapters/github/reader.js +185 -0
- package/dist/file-info/index.d.ts +4 -0
- package/dist/file-info/index.d.ts.map +1 -0
- package/dist/file-info/index.js +10 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -1
- package/dist/recorder/index.d.ts +7 -3
- package/dist/recorder/index.d.ts.map +1 -1
- package/dist/recorder/index.js +181 -64
- package/dist/recorder/temp-files.d.ts +1 -1
- package/dist/recorder/temp-files.d.ts.map +1 -1
- package/dist/recorder/temp-files.js +2 -2
- package/dist/recorder/upload.d.ts +1 -1
- package/dist/recorder/upload.d.ts.map +1 -1
- package/dist/recorder/upload.js +3 -3
- package/dist/tools/{commit-and-create-pr.d.ts → commit-and-create-pr/index.d.ts} +1 -1
- package/dist/tools/commit-and-create-pr/index.d.ts.map +1 -0
- package/dist/tools/{commit-and-create-pr.js → commit-and-create-pr/index.js} +8 -28
- package/dist/tools/definitions/commit-and-create-pr.d.ts +3 -0
- package/dist/tools/definitions/commit-and-create-pr.d.ts.map +1 -0
- package/dist/tools/definitions/commit-and-create-pr.js +31 -0
- package/dist/tools/definitions/delete-file.d.ts +3 -0
- package/dist/tools/definitions/delete-file.d.ts.map +1 -0
- package/dist/tools/definitions/delete-file.js +20 -0
- package/dist/tools/{download-build.d.ts → definitions/download-build.d.ts} +2 -2
- package/dist/tools/definitions/download-build.d.ts.map +1 -0
- package/dist/tools/definitions/download-build.js +18 -0
- package/dist/tools/definitions/fetch-video-analysis.d.ts +11 -0
- package/dist/tools/definitions/fetch-video-analysis.d.ts.map +1 -0
- package/dist/tools/definitions/fetch-video-analysis.js +26 -0
- package/dist/tools/definitions/grep.d.ts +3 -0
- package/dist/tools/definitions/grep.d.ts.map +1 -0
- package/dist/tools/definitions/grep.js +29 -0
- package/dist/tools/definitions/merge-conflicts.d.ts +3 -0
- package/dist/tools/definitions/merge-conflicts.d.ts.map +1 -0
- package/dist/tools/definitions/merge-conflicts.js +24 -0
- package/dist/tools/definitions/run-test.d.ts +2 -2
- package/dist/tools/definitions/run-test.d.ts.map +1 -1
- package/dist/tools/definitions/run-test.js +4 -7
- package/dist/tools/definitions/str_replace_editor.d.ts.map +1 -1
- package/dist/tools/definitions/str_replace_editor.js +9 -5
- package/dist/tools/definitions/test-gen-browser.d.ts +5 -5
- package/dist/tools/definitions/test-gen-browser.d.ts.map +1 -1
- package/dist/tools/definitions/test-gen-browser.js +4 -7
- package/dist/tools/definitions/upgrade-packages.d.ts +36 -0
- package/dist/tools/definitions/upgrade-packages.d.ts.map +1 -0
- package/dist/tools/definitions/upgrade-packages.js +21 -0
- package/dist/tools/definitions/utils.d.ts +15 -0
- package/dist/tools/definitions/utils.d.ts.map +1 -0
- package/dist/tools/definitions/utils.js +16 -0
- package/dist/tools/{delete-file.d.ts → delete-file/index.d.ts} +1 -1
- package/dist/tools/delete-file/index.d.ts.map +1 -0
- package/dist/tools/{delete-file.js → delete-file/index.js} +4 -16
- package/dist/tools/diagnosis-fetcher.d.ts.map +1 -1
- package/dist/tools/diagnosis-fetcher.js +13 -11
- package/dist/tools/download-build/index.d.ts +3 -0
- package/dist/tools/download-build/index.d.ts.map +1 -0
- package/dist/tools/{download-build.js → download-build/index.js} +4 -14
- package/dist/tools/executor/index.d.ts.map +1 -1
- package/dist/tools/executor/index.js +19 -4
- package/dist/tools/executor/utils/git.js +1 -1
- 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-image/index.d.ts +10 -1
- package/dist/tools/fetch-image/index.d.ts.map +1 -1
- package/dist/tools/fetch-image/index.js +8 -1
- package/dist/tools/fetch-last-successful-test-run/index.d.ts +3 -0
- package/dist/tools/fetch-last-successful-test-run/index.d.ts.map +1 -0
- package/dist/tools/fetch-last-successful-test-run/index.js +60 -0
- package/dist/tools/fetch-video-analysis/index.d.ts +5 -0
- package/dist/tools/fetch-video-analysis/index.d.ts.map +1 -0
- package/dist/tools/fetch-video-analysis/index.js +89 -0
- package/dist/tools/fetch-video-analysis/local-ffmpeg-client.d.ts +24 -0
- package/dist/tools/fetch-video-analysis/local-ffmpeg-client.d.ts.map +1 -0
- package/dist/tools/fetch-video-analysis/local-ffmpeg-client.js +209 -0
- package/dist/tools/fetch-video-analysis/utils.d.ts +10 -0
- package/dist/tools/fetch-video-analysis/utils.d.ts.map +1 -0
- package/dist/tools/fetch-video-analysis/utils.js +72 -0
- package/dist/tools/fetch-video-analysis/video-analysis.d.ts +7 -0
- package/dist/tools/fetch-video-analysis/video-analysis.d.ts.map +1 -0
- package/dist/tools/fetch-video-analysis/video-analysis.js +54 -0
- package/dist/tools/file-operations/create.d.ts +11 -0
- package/dist/tools/file-operations/create.d.ts.map +1 -0
- package/dist/tools/file-operations/create.js +60 -0
- package/dist/tools/file-operations/index.d.ts +15 -0
- package/dist/tools/file-operations/index.d.ts.map +1 -0
- package/dist/tools/file-operations/index.js +143 -0
- package/dist/tools/file-operations/insert.d.ts +11 -0
- package/dist/tools/file-operations/insert.d.ts.map +1 -0
- package/dist/tools/file-operations/insert.js +61 -0
- package/dist/tools/file-operations/replace.d.ts +11 -0
- package/dist/tools/file-operations/replace.d.ts.map +1 -0
- package/dist/tools/file-operations/replace.js +80 -0
- package/dist/tools/file-operations/shared/git-helper.d.ts +4 -0
- package/dist/tools/file-operations/shared/git-helper.d.ts.map +1 -0
- package/dist/tools/file-operations/shared/git-helper.js +29 -0
- package/dist/tools/file-operations/shared/helpers.d.ts +19 -0
- package/dist/tools/file-operations/shared/helpers.d.ts.map +1 -0
- package/dist/tools/file-operations/shared/helpers.js +133 -0
- package/dist/tools/file-operations/view/index.d.ts +14 -0
- package/dist/tools/file-operations/view/index.d.ts.map +1 -0
- package/dist/tools/file-operations/view/index.js +56 -0
- package/dist/tools/grep/index.d.ts.map +1 -1
- package/dist/tools/grep/index.js +2 -9
- package/dist/tools/grep/ripgrep/index.d.ts +2 -2
- package/dist/tools/grep/ripgrep/index.d.ts.map +1 -1
- package/dist/tools/grep/ripgrep/index.js +3 -3
- package/dist/tools/grep/types.d.ts.map +1 -0
- package/dist/tools/index.d.ts +7 -2
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +66 -22
- package/dist/tools/issues/create-issue.d.ts +3 -0
- package/dist/tools/issues/create-issue.d.ts.map +1 -0
- package/dist/tools/issues/create-issue.js +76 -0
- package/dist/tools/issues/index.d.ts +4 -0
- package/dist/tools/issues/index.d.ts.map +1 -0
- package/dist/tools/issues/index.js +9 -0
- package/dist/tools/issues/list-issues.d.ts +3 -0
- package/dist/tools/issues/list-issues.d.ts.map +1 -0
- package/dist/tools/issues/list-issues.js +32 -0
- package/dist/tools/issues/metadata-schema.d.ts +24 -0
- package/dist/tools/issues/metadata-schema.d.ts.map +1 -0
- package/dist/tools/issues/metadata-schema.js +22 -0
- package/dist/tools/issues/update-issue.d.ts +3 -0
- package/dist/tools/issues/update-issue.d.ts.map +1 -0
- package/dist/tools/issues/update-issue.js +75 -0
- package/dist/tools/issues/utils.d.ts +5 -0
- package/dist/tools/issues/utils.d.ts.map +1 -0
- package/dist/tools/issues/utils.js +26 -0
- package/dist/tools/list-environments.d.ts.map +1 -1
- package/dist/tools/list-environments.js +4 -0
- package/dist/tools/{merge-conflicts.d.ts → merge-conflicts/index.d.ts} +1 -1
- package/dist/tools/merge-conflicts/index.d.ts.map +1 -0
- package/dist/tools/{merge-conflicts.js → merge-conflicts/index.js} +3 -19
- package/dist/tools/test-gen-browser.js +4 -4
- package/dist/tools/test-run-fetcher/index.d.ts.map +1 -1
- package/dist/tools/test-run-fetcher/index.js +4 -0
- package/dist/tools/trace-dot-zip/index.d.ts +3 -0
- package/dist/tools/trace-dot-zip/index.d.ts.map +1 -0
- package/dist/tools/trace-dot-zip/index.js +48 -0
- package/dist/tools/trace-dot-zip/types.d.ts +86 -0
- package/dist/tools/trace-dot-zip/types.d.ts.map +1 -0
- package/dist/tools/trace-dot-zip/types.js +2 -0
- package/dist/tools/trace-dot-zip/utils/console-trace.d.ts +7 -0
- package/dist/tools/trace-dot-zip/utils/console-trace.d.ts.map +1 -0
- package/dist/tools/trace-dot-zip/utils/console-trace.js +34 -0
- package/dist/tools/trace-dot-zip/utils/extract-zip.d.ts +21 -0
- package/dist/tools/trace-dot-zip/utils/extract-zip.d.ts.map +1 -0
- package/dist/tools/trace-dot-zip/utils/extract-zip.js +174 -0
- package/dist/tools/trace-dot-zip/utils/network-trace.d.ts +21 -0
- package/dist/tools/trace-dot-zip/utils/network-trace.d.ts.map +1 -0
- package/dist/tools/trace-dot-zip/utils/network-trace.js +189 -0
- package/dist/tools/triage-summary/index.d.ts +3 -0
- package/dist/tools/triage-summary/index.d.ts.map +1 -0
- package/dist/tools/triage-summary/index.js +51 -0
- package/dist/tools/triage-summary/types.d.ts +5 -0
- package/dist/tools/triage-summary/types.d.ts.map +1 -0
- package/dist/tools/triage-summary/types.js +2 -0
- package/dist/tools/triage-summary/utils.d.ts +4 -0
- package/dist/tools/triage-summary/utils.d.ts.map +1 -0
- package/dist/tools/triage-summary/utils.js +16 -0
- package/dist/tools/upgrade-packages/index.d.ts.map +1 -1
- package/dist/tools/upgrade-packages/index.js +5 -15
- package/dist/tools/view-failed-test-run-report/index.d.ts +12 -0
- package/dist/tools/view-failed-test-run-report/index.d.ts.map +1 -0
- package/dist/tools/view-failed-test-run-report/index.js +163 -0
- package/dist/trace-utils/index.d.ts +4 -0
- package/dist/trace-utils/index.d.ts.map +1 -0
- package/dist/trace-utils/index.js +10 -0
- package/dist/utils/dedup-image-fs.d.ts +27 -0
- package/dist/utils/dedup-image-fs.d.ts.map +1 -0
- package/dist/utils/dedup-image-fs.js +88 -0
- package/dist/utils/dedup-image.d.ts +25 -0
- package/dist/utils/dedup-image.d.ts.map +1 -0
- package/dist/utils/dedup-image.js +80 -0
- package/dist/utils/env.d.ts.map +1 -1
- package/dist/utils/env.js +0 -1
- package/dist/utils/json.js +1 -1
- package/dist/utils/model.d.ts +3 -0
- package/dist/utils/model.d.ts.map +1 -0
- package/dist/utils/model.js +18 -0
- package/dist/utils/playwright-report-parser.d.ts +13 -0
- package/dist/utils/playwright-report-parser.d.ts.map +1 -0
- package/dist/utils/playwright-report-parser.js +138 -0
- package/dist/utils/slug.d.ts +1 -0
- package/dist/utils/slug.d.ts.map +1 -1
- package/dist/utils/slug.js +9 -1
- package/dist/utils/stripAnsi.d.ts.map +1 -1
- package/dist/utils/stripAnsi.js +1 -3
- package/eslint.config.mjs +43 -0
- package/package.json +22 -6
- package/tsconfig.tsbuildinfo +1 -1
- package/dist/agent/codegen/generate-code-apply-changes.d.ts +0 -13
- package/dist/agent/codegen/generate-code-apply-changes.d.ts.map +0 -1
- package/dist/agent/codegen/generate-code-apply-changes.js +0 -379
- package/dist/agent/codegen/repo-edit.d.ts +0 -23
- package/dist/agent/codegen/repo-edit.d.ts.map +0 -1
- package/dist/agent/codegen/repo-edit.js +0 -81
- package/dist/agent/codegen/run.d.ts +0 -20
- package/dist/agent/codegen/run.d.ts.map +0 -1
- package/dist/agent/codegen/run.js +0 -116
- package/dist/agent/enrich-prompt/index.d.ts +0 -12
- package/dist/agent/enrich-prompt/index.d.ts.map +0 -1
- package/dist/agent/enrich-prompt/index.js +0 -80
- package/dist/agent/enrich-prompt/utils.d.ts +0 -6
- package/dist/agent/enrich-prompt/utils.d.ts.map +0 -1
- package/dist/agent/enrich-prompt/utils.js +0 -11
- package/dist/agent/infer-agent/index.d.ts +0 -10
- package/dist/agent/infer-agent/index.d.ts.map +0 -1
- package/dist/agent/infer-agent/index.js +0 -60
- package/dist/evals/add-scenario-agent.evals.d.ts +0 -4
- package/dist/evals/add-scenario-agent.evals.d.ts.map +0 -1
- package/dist/evals/add-scenario-agent.evals.js +0 -44
- package/dist/evals/infer-master-or-code-agent.evals.d.ts +0 -4
- package/dist/evals/infer-master-or-code-agent.evals.d.ts.map +0 -1
- package/dist/evals/infer-master-or-code-agent.evals.js +0 -22
- package/dist/file-info/file-system.d.ts +0 -3
- package/dist/file-info/file-system.d.ts.map +0 -1
- package/dist/file-info/github.d.ts +0 -3
- package/dist/file-info/github.d.ts.map +0 -1
- package/dist/file-info/github.js +0 -107
- package/dist/tools/commit-and-create-pr.d.ts.map +0 -1
- package/dist/tools/delete-file.d.ts.map +0 -1
- package/dist/tools/download-build.d.ts.map +0 -1
- package/dist/tools/grep/ripgrep/types.d.ts.map +0 -1
- package/dist/tools/merge-conflicts.d.ts.map +0 -1
- package/dist/tools/str_replace_editor.d.ts +0 -22
- package/dist/tools/str_replace_editor.d.ts.map +0 -1
- package/dist/tools/str_replace_editor.js +0 -429
- /package/dist/tools/grep/{ripgrep/types.d.ts → types.d.ts} +0 -0
- /package/dist/tools/grep/{ripgrep/types.js → types.js} +0 -0
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,101 @@
|
|
|
1
1
|
# @empiricalrun/test-gen
|
|
2
2
|
|
|
3
|
+
## 0.74.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- de7be1a: feat: added console traces to trace.zip tool
|
|
8
|
+
- 5fc3b85: feat: add fetchLastSuccessfulTestRun tool & api endpoint
|
|
9
|
+
- 8956b5c: refactor: simplify default model selection by delegating to a single function
|
|
10
|
+
- 7c4057e: feat: Made the listIssues tool call inline
|
|
11
|
+
- 17fa058: feat: add model mode, mode based tool & system prompt
|
|
12
|
+
- b52ec03: feat: triage summary tool with slack messages
|
|
13
|
+
- 3613b5f: feat: updated tool defs, runtTest, fetchLastSuccessfulTestRun, viewFailedTestRunReport, updated last-successful-run endpoint
|
|
14
|
+
- c0c97cf: feat: add chunking and dedup fs to avoid memory issues, add LLM usage to toolResponse
|
|
15
|
+
- a03391a: feat: upload unique frames to video-analysis bucket with video hash
|
|
16
|
+
- b404912: feat: added trace.zip tool for network traces (based on existing approach from inngest)
|
|
17
|
+
- 1d90369: feat: permalink support in issues, updated IDashboardClient to getBaseUrl
|
|
18
|
+
- 4b45e85: feat: split upload b/w frames and summary to decrease wait
|
|
19
|
+
- cbaf687: feat: Added auto option in CLI (empty --model results in default fallback)
|
|
20
|
+
- 5a8af12: feat: tools array based on agent mode or env
|
|
21
|
+
- ce54ca8: feat: video analysis working in CLI & UI minor cleanup
|
|
22
|
+
- 565a820: refactor: converted PUT calls to PATCH in update issue api
|
|
23
|
+
- 681aebb: fix: moving trace dot zip tool to not be inline so it gets executed on tool execute
|
|
24
|
+
- 773d1f8: feat: issue queries & tools update with new test metadata fields
|
|
25
|
+
- 6585338: feat: added inline viewTestRunReport tool for triage
|
|
26
|
+
- c0931db: feat: add issue(s) list & add tools
|
|
27
|
+
- 2718944: fix: trim viewTestRunReportTool result size by removing steps from results array
|
|
28
|
+
- aa14384: feat: add updateIssue tool
|
|
29
|
+
- c112011: feat: add reset-chat flag to cli
|
|
30
|
+
- 50c05ff: feat: added send triage summary tool
|
|
31
|
+
- 9635632: feat: issues with health stats
|
|
32
|
+
- 8eeb121: fix: project id filter fix, use-triage in cli
|
|
33
|
+
|
|
34
|
+
### Patch Changes
|
|
35
|
+
|
|
36
|
+
- 1600c5d: feat: improvements to tool call telemetry
|
|
37
|
+
- 01b693e: feat: moved file view commands to inline exec
|
|
38
|
+
- 63a7b56: chore: remove some default model indirection
|
|
39
|
+
- af74c99: fix: rm codeframes, steps, snippet from the test viewTestRunReport output
|
|
40
|
+
- 9f33a7a: chore: fetch r2 files with suffix, add created_at to summary
|
|
41
|
+
- 04940d6: fix: fix chunking error in ffmpeg local client with error handling
|
|
42
|
+
- 028d845: chore: Added more tools to the inline execution roster
|
|
43
|
+
- 01b693e: fix: added branch name field to the GitHub API and minor refactors in the test-gen package
|
|
44
|
+
- 035febd: feat: runTest tool is now a common tool
|
|
45
|
+
- 7fecf0a: feat: enable streaming on openai chat models
|
|
46
|
+
- 4f598eb: feat: add gpt-5
|
|
47
|
+
- 4c8249a: test: fix agent-worker tests for parallel execution
|
|
48
|
+
- ad91c42: fix: allow insert_text in str_replace_editor tool for claude 4
|
|
49
|
+
- 68ce1d1: fix: fetchVideoAnalysis error handling, minor cleanup
|
|
50
|
+
- 2de74d0: chore: bump openai to 5.x
|
|
51
|
+
- 41816c3: chore: enabled inline tool execution for fetch diagnosis.
|
|
52
|
+
- 5651643: feat: recorder can pause before failing line when given a report url
|
|
53
|
+
- 3d738f4: chore: split text editor tool call telemetry for commands
|
|
54
|
+
- de01455: fix: moved project filter before inngest event send, added project id to log, separate test-gen utils exports
|
|
55
|
+
- 40ef060: fix: support dir paths in inline file view
|
|
56
|
+
- 5da0a60: feat: internal openai model supports multi-modal tool responses
|
|
57
|
+
- 6d80d21: feat: video analysis review UI under admin route
|
|
58
|
+
- fdc2ee8: feat: working video analysis with gemini-2.5-flash
|
|
59
|
+
- 612e383: fix: parallel tool calling claude chat model
|
|
60
|
+
- fe95cd7: chore: update prompts for triage session
|
|
61
|
+
- 4b898bd: fix: elevate usage summary to agent loop
|
|
62
|
+
- 7b3c12b: chore: simplify agent loop interface
|
|
63
|
+
- 91d856c: fix: mode in agent-loop mandatroy, and being used
|
|
64
|
+
- 5c91897: chore: Completed TODOs and refactored the inline tool identification logic"
|
|
65
|
+
- ac01228: chore: upgrade to eslint 9
|
|
66
|
+
- Updated dependencies [cb503a6]
|
|
67
|
+
- Updated dependencies [29eb6fb]
|
|
68
|
+
- Updated dependencies [a6e6141]
|
|
69
|
+
- Updated dependencies [63271bd]
|
|
70
|
+
- Updated dependencies [9f33a7a]
|
|
71
|
+
- Updated dependencies [c0c97cf]
|
|
72
|
+
- Updated dependencies [7fecf0a]
|
|
73
|
+
- Updated dependencies [4f598eb]
|
|
74
|
+
- Updated dependencies [ad91c42]
|
|
75
|
+
- Updated dependencies [ce54ca8]
|
|
76
|
+
- Updated dependencies [2de74d0]
|
|
77
|
+
- Updated dependencies [5651643]
|
|
78
|
+
- Updated dependencies [5da0a60]
|
|
79
|
+
- Updated dependencies [fdc2ee8]
|
|
80
|
+
- Updated dependencies [612e383]
|
|
81
|
+
- Updated dependencies [4b898bd]
|
|
82
|
+
- Updated dependencies [89858b4]
|
|
83
|
+
- Updated dependencies [f83a0b0]
|
|
84
|
+
- Updated dependencies [7b3c12b]
|
|
85
|
+
- Updated dependencies [98853ca]
|
|
86
|
+
- @empiricalrun/llm@0.21.0
|
|
87
|
+
- @empiricalrun/r2-uploader@0.3.10
|
|
88
|
+
- @empiricalrun/ast-parser@0.0.9
|
|
89
|
+
|
|
90
|
+
## 0.73.1
|
|
91
|
+
|
|
92
|
+
### Patch Changes
|
|
93
|
+
|
|
94
|
+
- a9b79d2: feat: auto-capture screenshots on test runs
|
|
95
|
+
- a1b9060: feat: add interleaved thinking to claude
|
|
96
|
+
- Updated dependencies [a1b9060]
|
|
97
|
+
- @empiricalrun/llm@0.20.2
|
|
98
|
+
|
|
3
99
|
## 0.73.0
|
|
4
100
|
|
|
5
101
|
### Minor Changes
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/actions/utils/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAElC,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,MAAM;QACd,UAAU,EAAE,GAAG,CAAC;QAChB,MAAM,EAAE,GAAG,CAAC;KACb;CACF;AAED,wBAAsB,oCAAoC,CACxD,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,IAAI,EACV,iBAAiB,CAAC,EAAE,MAAM,gBAkH3B;AAED,wBAAgB,cAAc,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/actions/utils/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAElC,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,MAAM;QACd,UAAU,EAAE,GAAG,CAAC;QAChB,MAAM,EAAE,GAAG,CAAC;KACb;CACF;AAED,wBAAsB,oCAAoC,CACxD,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,IAAI,EACV,iBAAiB,CAAC,EAAE,MAAM,gBAkH3B;AAED,wBAAgB,cAAc,WAE7B"}
|
|
@@ -71,7 +71,7 @@ async function getPlaywrightLocatorUsingCssSelector(cssSelector, xpath, page, el
|
|
|
71
71
|
});
|
|
72
72
|
selectedElem = leastNestedElements[0];
|
|
73
73
|
}
|
|
74
|
-
catch
|
|
74
|
+
catch {
|
|
75
75
|
// ignore error
|
|
76
76
|
}
|
|
77
77
|
}
|
|
@@ -103,6 +103,5 @@ async function getPlaywrightLocatorUsingCssSelector(cssSelector, xpath, page, el
|
|
|
103
103
|
});
|
|
104
104
|
}
|
|
105
105
|
function getPageVarName() {
|
|
106
|
-
// eslint-disable-next-line turbo/no-undeclared-env-vars
|
|
107
106
|
return process.env.PAGE_VAR_NAME || "page";
|
|
108
107
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/agent/browsing/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,GAAG,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACpE,OAAO,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAElC,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAKlD,MAAM,MAAM,kBAAkB,GAAG;IAC/B,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC;CAC1B,CAAC;AAEF,wBAAsB,6BAA6B,CAAC,EAClD,MAAM,EACN,IAAI,EACJ,OAAO,EACP,GAAG,EACH,KAAK,GACN,EAAE;IACD,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,IAAI,CAAC;IACX,OAAO,EAAE,iBAAiB,CAAC;IAC3B,GAAG,CAAC,EAAE,GAAG,CAAC;IACV,KAAK,CAAC,EAAE,WAAW,CAAC;CACrB,GAAG,OAAO,CAAC,kBAAkB,GAAG,SAAS,CAAC,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/agent/browsing/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,GAAG,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACpE,OAAO,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAElC,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAKlD,MAAM,MAAM,kBAAkB,GAAG;IAC/B,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC;CAC1B,CAAC;AAEF,wBAAsB,6BAA6B,CAAC,EAClD,MAAM,EACN,IAAI,EACJ,OAAO,EACP,GAAG,EACH,KAAK,GACN,EAAE;IACD,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,IAAI,CAAC;IACX,OAAO,EAAE,iBAAiB,CAAC;IAC3B,GAAG,CAAC,EAAE,GAAG,CAAC;IACV,KAAK,CAAC,EAAE,WAAW,CAAC;CACrB,GAAG,OAAO,CAAC,kBAAkB,GAAG,SAAS,CAAC,CA0D1C"}
|
|
@@ -45,13 +45,15 @@ async function executeTaskUsingBrowsingAgent({ action, page, actions, llm, trace
|
|
|
45
45
|
const toolCallsSpan = browsingAgentSpan?.span({ name: "tool-calls" });
|
|
46
46
|
for (const i in toolCalls) {
|
|
47
47
|
const toolCall = toolCalls[i];
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
48
|
+
if ("function" in toolCall) {
|
|
49
|
+
const args = JSON.parse(toolCall.function.arguments);
|
|
50
|
+
const code = await actions.executeAction(toolCall.function.name, JSON.parse(toolCall.function.arguments), toolCallsSpan);
|
|
51
|
+
generatedCodeSteps = {
|
|
52
|
+
// Passing reason as action, in order to pass the correct action that took place to runtime planner
|
|
53
|
+
action: args.reason,
|
|
54
|
+
code,
|
|
55
|
+
};
|
|
56
|
+
}
|
|
55
57
|
}
|
|
56
58
|
toolCallsSpan?.end({ output: { toolCalls, generatedCodeSteps } });
|
|
57
59
|
return generatedCodeSteps;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/agent/browsing/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAC;AAI3D,OAAO,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAClC,OAAO,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AAsBvD,wBAAgB,QAAQ,CAAC,GAAG,EAAE,GAAG,GAAG,GAAG,IAAI,MAAM,CAKhD;AAED,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,MAAM,EAAE,UAIvD;AAED,wBAAsB,kBAAkB,CACtC,YAAY,EAAE,MAAM,EACpB,UAAU,EAAE,MAAM,iBAgBnB;AAgED,wBAAsB,yBAAyB,CAC7C,YAAY,EAAE,MAAM,EACpB,OAAO,EAAE,MAAM,iBAwBhB;AAED,wBAAsB,cAAc,CAAC,EACnC,YAAY,EACZ,cAAc,EACd,QAAQ,GACT,EAAE;IACD,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,QAAQ,EAAE,MAAM,CAAC;CAClB,iBAoBA;AAED,wBAAsB,yBAAyB,CAAC,EAC9C,QAAQ,EACR,QAAQ,EACR,KAAK,GACN,EAAE;IACD,QAAQ,EAAE,QAAQ,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,WAAW,CAAC;CACrB,GAAG,OAAO,CAAC,MAAM,CAAC,CAyDlB;AAyBD,wBAAsB,wBAAwB,CAAC,IAAI,EAAE,IAAI,
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/agent/browsing/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAC;AAI3D,OAAO,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAClC,OAAO,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AAsBvD,wBAAgB,QAAQ,CAAC,GAAG,EAAE,GAAG,GAAG,GAAG,IAAI,MAAM,CAKhD;AAED,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,MAAM,EAAE,UAIvD;AAED,wBAAsB,kBAAkB,CACtC,YAAY,EAAE,MAAM,EACpB,UAAU,EAAE,MAAM,iBAgBnB;AAgED,wBAAsB,yBAAyB,CAC7C,YAAY,EAAE,MAAM,EACpB,OAAO,EAAE,MAAM,iBAwBhB;AAED,wBAAsB,cAAc,CAAC,EACnC,YAAY,EACZ,cAAc,EACd,QAAQ,GACT,EAAE;IACD,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,QAAQ,EAAE,MAAM,CAAC;CAClB,iBAoBA;AAED,wBAAsB,yBAAyB,CAAC,EAC9C,QAAQ,EACR,QAAQ,EACR,KAAK,GACN,EAAE;IACD,QAAQ,EAAE,QAAQ,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,WAAW,CAAC;CACrB,GAAG,OAAO,CAAC,MAAM,CAAC,CAyDlB;AAyBD,wBAAsB,wBAAwB,CAAC,IAAI,EAAE,IAAI,iBA6HxD;AAED;;;GAGG;AACH,wBAAsB,oBAAoB,CACxC,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,oBAAoB,CAAC,CA2B/B;AAWD,wBAAsB,oBAAoB,CACxC,gBAAgB,EAAE,oBAAoB,GACrC,OAAO,CAAC,MAAM,EAAE,CAAC,CAQnB;AAED;;;;;GAKG;AACH,wBAAsB,iBAAiB,CACrC,YAAY,EAAE,MAAM,EACpB,gBAAgB,EAAE,oBAAoB,EACtC,gBAAgB,GAAE,MAAM,EAAU,GACjC,OAAO,CAAC,MAAM,CAAC,CA+CjB"}
|
|
@@ -183,7 +183,6 @@ function newContentsWithTestOnly(existingContents, originalTestBlock, updatedTes
|
|
|
183
183
|
}
|
|
184
184
|
async function injectPwLocatorGenerator(page) {
|
|
185
185
|
let pathToInstalledTestGen = require.resolve(".").split("dist")[0];
|
|
186
|
-
// eslint-disable-next-line turbo/no-undeclared-env-vars
|
|
187
186
|
if (process.env.RUNNING_BROWSER_TESTS_FOR_TEST_GEN) {
|
|
188
187
|
pathToInstalledTestGen = process.cwd();
|
|
189
188
|
}
|
|
@@ -220,7 +219,7 @@ async function injectPwLocatorGenerator(page) {
|
|
|
220
219
|
iframeDoc.head.appendChild(script);
|
|
221
220
|
});
|
|
222
221
|
}
|
|
223
|
-
catch
|
|
222
|
+
catch {
|
|
224
223
|
console.warn("Error injecting script in iframe.");
|
|
225
224
|
}
|
|
226
225
|
};
|
|
@@ -264,7 +263,7 @@ async function injectPwLocatorGenerator(page) {
|
|
|
264
263
|
iframeDoc.head.appendChild(scr);
|
|
265
264
|
});
|
|
266
265
|
}
|
|
267
|
-
catch
|
|
266
|
+
catch {
|
|
268
267
|
console.warn("Error injecting script in iframe.");
|
|
269
268
|
}
|
|
270
269
|
};
|
|
@@ -284,7 +283,7 @@ async function injectPwLocatorGenerator(page) {
|
|
|
284
283
|
}
|
|
285
284
|
});
|
|
286
285
|
}
|
|
287
|
-
catch
|
|
286
|
+
catch {
|
|
288
287
|
console.warn("Error injecting script in iframe.");
|
|
289
288
|
}
|
|
290
289
|
}
|
|
@@ -1,19 +1,18 @@
|
|
|
1
1
|
import { TraceClient } from "@empiricalrun/llm";
|
|
2
2
|
import { IChatModel } from "@empiricalrun/llm/chat";
|
|
3
|
-
import { FileInfo, PendingToolCall, ReporterFunction, StreamingMessageReporterFunc, SupportedChatModels, ToolDefinition } from "@empiricalrun/shared-types";
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
chatModel: IChatModel<any>;
|
|
3
|
+
import { CanonicalMessage, FileInfo, PendingToolCall, ReporterFunction, StreamingMessageReporterFunc, SupportedChatModels, ToolDefinition } from "@empiricalrun/shared-types";
|
|
4
|
+
export declare function chatAgentLoop<T = CanonicalMessage>({ chatModel, selectedModel, reporter, streamingMessageReporter, trace, repoInfo, signal, featureFlags, tools, onPendingToolCall, onLLMResponse, mode, }: {
|
|
5
|
+
chatModel: IChatModel<T>;
|
|
7
6
|
selectedModel: SupportedChatModels;
|
|
8
|
-
isToolExecutionRemote: boolean;
|
|
9
|
-
toolExecutor: ToolExecutor | undefined;
|
|
10
7
|
reporter: ReporterFunction;
|
|
11
8
|
streamingMessageReporter?: StreamingMessageReporterFunc;
|
|
12
9
|
trace?: TraceClient;
|
|
13
10
|
repoInfo: FileInfo;
|
|
14
|
-
tools: ToolDefinition[];
|
|
15
|
-
onPendingToolCall: (toolCalls: PendingToolCall[]) => Promise<void>;
|
|
16
11
|
signal?: AbortSignal;
|
|
17
12
|
featureFlags: string[];
|
|
13
|
+
tools?: ToolDefinition[];
|
|
14
|
+
onPendingToolCall: (toolCalls: PendingToolCall[]) => Promise<void>;
|
|
15
|
+
onLLMResponse?: (response: T, selectedModel: SupportedChatModels) => Promise<void>;
|
|
16
|
+
mode: string;
|
|
18
17
|
}): Promise<void>;
|
|
19
18
|
//# sourceMappingURL=agent-loop.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-loop.d.ts","sourceRoot":"","sources":["../../../src/agent/chat/agent-loop.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,UAAU,
|
|
1
|
+
{"version":3,"file":"agent-loop.d.ts","sourceRoot":"","sources":["../../../src/agent/chat/agent-loop.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACpD,OAAO,EACL,gBAAgB,EAChB,QAAQ,EACR,eAAe,EACf,gBAAgB,EAChB,4BAA4B,EAC5B,mBAAmB,EACnB,cAAc,EACf,MAAM,4BAA4B,CAAC;AAOpC,wBAAsB,aAAa,CAAC,CAAC,GAAG,gBAAgB,EAAE,EACxD,SAAS,EACT,aAAa,EACb,QAAQ,EACR,wBAAwB,EACxB,KAAK,EACL,QAAQ,EACR,MAAM,EACN,YAAY,EACZ,KAAK,EACL,iBAAiB,EACjB,aAAa,EACb,IAAI,GACL,EAAE;IACD,SAAS,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC;IACzB,aAAa,EAAE,mBAAmB,CAAC;IACnC,QAAQ,EAAE,gBAAgB,CAAC;IAC3B,wBAAwB,CAAC,EAAE,4BAA4B,CAAC;IACxD,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,QAAQ,EAAE,QAAQ,CAAC;IACnB,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,KAAK,CAAC,EAAE,cAAc,EAAE,CAAC;IACzB,iBAAiB,EAAE,CAAC,SAAS,EAAE,eAAe,EAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACnE,aAAa,CAAC,EAAE,CACd,QAAQ,EAAE,CAAC,EACX,aAAa,EAAE,mBAAmB,KAC/B,OAAO,CAAC,IAAI,CAAC,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;CACd,GAAG,OAAO,CAAC,IAAI,CAAC,CAmEhB"}
|
|
@@ -1,15 +1,18 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.chatAgentLoop = chatAgentLoop;
|
|
4
|
-
const
|
|
4
|
+
const tools_1 = require("../../tools");
|
|
5
5
|
const prompt_1 = require("./prompt");
|
|
6
6
|
const state_1 = require("./state");
|
|
7
7
|
const utils_1 = require("./utils");
|
|
8
|
-
async function chatAgentLoop({ chatModel, selectedModel, reporter, streamingMessageReporter, trace,
|
|
9
|
-
const systemPrompt = await (0, prompt_1.
|
|
8
|
+
async function chatAgentLoop({ chatModel, selectedModel, reporter, streamingMessageReporter, trace, repoInfo, signal, featureFlags, tools, onPendingToolCall, onLLMResponse, mode, }) {
|
|
9
|
+
const systemPrompt = await (0, prompt_1.getSystemPrompt)(repoInfo, mode);
|
|
10
10
|
trace?.update({ input: { systemPrompt } });
|
|
11
|
+
if (!mode && !tools) {
|
|
12
|
+
throw new Error("Either mode or tools must be provided");
|
|
13
|
+
}
|
|
14
|
+
const availableToolsData = tools || (0, tools_1.availableTools)(selectedModel, mode === "triage");
|
|
11
15
|
while (!chatModel.askUserForInput) {
|
|
12
|
-
// Abort if signal is set
|
|
13
16
|
if (signal?.aborted) {
|
|
14
17
|
(0, utils_1.log)("[chatAgentLoop] Aborted by signal");
|
|
15
18
|
break;
|
|
@@ -18,31 +21,25 @@ async function chatAgentLoop({ chatModel, selectedModel, reporter, streamingMess
|
|
|
18
21
|
const toolCalls = chatModel.getPendingToolCalls();
|
|
19
22
|
if (toolCalls.length > 0) {
|
|
20
23
|
await onPendingToolCall(toolCalls);
|
|
21
|
-
|
|
22
|
-
(0, utils_1.log)(`Tool call remote execution in progress`);
|
|
23
|
-
break;
|
|
24
|
-
}
|
|
25
|
-
else {
|
|
26
|
-
if (!toolExecutor) {
|
|
27
|
-
throw new Error("ToolExecutor is required for local execution");
|
|
28
|
-
}
|
|
29
|
-
const toolResults = await toolExecutor.execute(toolCalls);
|
|
30
|
-
chatModel.pushToolResultsMessage(toolCalls, toolResults);
|
|
31
|
-
}
|
|
24
|
+
break;
|
|
32
25
|
}
|
|
33
26
|
(0, utils_1.log)(`${(0, utils_1.getModelName)(selectedModel)} is working...`);
|
|
34
27
|
const response = await chatModel.getLLMResponse({
|
|
35
28
|
systemPrompt,
|
|
36
|
-
tools:
|
|
29
|
+
tools: availableToolsData.map((t) => t.schema),
|
|
37
30
|
selectedModel,
|
|
38
31
|
trace,
|
|
39
32
|
streamingMessageReporter,
|
|
40
|
-
hasThinkingEnabled:
|
|
33
|
+
hasThinkingEnabled: true,
|
|
34
|
+
hasInterleavedThinkingEnabled: featureFlags.includes("interleavedThinkingClaude"),
|
|
41
35
|
});
|
|
42
36
|
if (!response) {
|
|
43
37
|
throw new Error("Error getting response from LLM");
|
|
44
38
|
}
|
|
45
39
|
chatModel.pushMessage(response);
|
|
40
|
+
if (onLLMResponse) {
|
|
41
|
+
await onLLMResponse(response, selectedModel);
|
|
42
|
+
}
|
|
46
43
|
const latest = chatModel.getHumanReadableLatestMessage();
|
|
47
44
|
if (signal?.aborted) {
|
|
48
45
|
(0, utils_1.log)("[chatAgentLoop] Aborted by signal");
|
|
@@ -1,8 +1,9 @@
|
|
|
1
|
-
export { getFileInfoFromGitHub } from "../../file-info/github";
|
|
1
|
+
export { getFileInfoFromGitHub, viewFileUsingGitHub, } from "../../file-info/adapters/github";
|
|
2
|
+
export { allToolsDefinitions } from "../../tools";
|
|
2
3
|
export { chatAgentLoop } from "./agent-loop";
|
|
3
|
-
export {
|
|
4
|
-
export { CHAT_STATE_VERSIONS_MIGRATIONS_MAP, chatStateFromModel, createChatState, createChatStateForMessages,
|
|
5
|
-
export { extractAttachments } from "./utils";
|
|
4
|
+
export { getDefaultChatModelId, resolveChatModelBasedOnInput } from "./models";
|
|
5
|
+
export { CHAT_STATE_VERSIONS_MIGRATIONS_MAP, chatStateFromModel, createChatState, createChatStateForMessages, fetchToolCallFromId, getLatestDownloadBuildUrl, LATEST_CHAT_STATE_VERSION, migrateChatState, processAttachments, } from "./state";
|
|
6
|
+
export { extractAttachments, getChatAgentMode } from "./utils";
|
|
6
7
|
export { processToolCallsAndUpdateChatState, rejectPendingToolCalls, } from "./utils/tool-calls";
|
|
7
8
|
export type { IChatModel } from "@empiricalrun/llm/chat";
|
|
8
9
|
export { createChatModel, SUPPORTED_CHAT_MODELS } from "@empiricalrun/llm/chat";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"exports.d.ts","sourceRoot":"","sources":["../../../src/agent/chat/exports.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"exports.d.ts","sourceRoot":"","sources":["../../../src/agent/chat/exports.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,qBAAqB,EACrB,mBAAmB,GACpB,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,qBAAqB,EAAE,4BAA4B,EAAE,MAAM,UAAU,CAAC;AAC/E,OAAO,EACL,kCAAkC,EAClC,kBAAkB,EAClB,eAAe,EACf,0BAA0B,EAC1B,mBAAmB,EACnB,yBAAyB,EACzB,yBAAyB,EACzB,gBAAgB,EAChB,kBAAkB,GACnB,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAC/D,OAAO,EACL,kCAAkC,EAClC,sBAAsB,GACvB,MAAM,oBAAoB,CAAC;AAC5B,YAAY,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,eAAe,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC"}
|
|
@@ -1,24 +1,29 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.SUPPORTED_CHAT_MODELS = exports.createChatModel = exports.rejectPendingToolCalls = exports.processToolCallsAndUpdateChatState = exports.extractAttachments = exports.processAttachments = exports.migrateChatState = exports.LATEST_CHAT_STATE_VERSION = exports.getLatestDownloadBuildUrl = exports.
|
|
4
|
-
var github_1 = require("../../file-info/github");
|
|
3
|
+
exports.SUPPORTED_CHAT_MODELS = exports.createChatModel = exports.rejectPendingToolCalls = exports.processToolCallsAndUpdateChatState = exports.getChatAgentMode = exports.extractAttachments = exports.processAttachments = exports.migrateChatState = exports.LATEST_CHAT_STATE_VERSION = exports.getLatestDownloadBuildUrl = exports.fetchToolCallFromId = exports.createChatStateForMessages = exports.createChatState = exports.chatStateFromModel = exports.CHAT_STATE_VERSIONS_MIGRATIONS_MAP = exports.resolveChatModelBasedOnInput = exports.getDefaultChatModelId = exports.chatAgentLoop = exports.allToolsDefinitions = exports.viewFileUsingGitHub = exports.getFileInfoFromGitHub = void 0;
|
|
4
|
+
var github_1 = require("../../file-info/adapters/github");
|
|
5
5
|
Object.defineProperty(exports, "getFileInfoFromGitHub", { enumerable: true, get: function () { return github_1.getFileInfoFromGitHub; } });
|
|
6
|
+
Object.defineProperty(exports, "viewFileUsingGitHub", { enumerable: true, get: function () { return github_1.viewFileUsingGitHub; } });
|
|
7
|
+
var tools_1 = require("../../tools");
|
|
8
|
+
Object.defineProperty(exports, "allToolsDefinitions", { enumerable: true, get: function () { return tools_1.allToolsDefinitions; } });
|
|
6
9
|
var agent_loop_1 = require("./agent-loop");
|
|
7
10
|
Object.defineProperty(exports, "chatAgentLoop", { enumerable: true, get: function () { return agent_loop_1.chatAgentLoop; } });
|
|
8
11
|
var models_1 = require("./models");
|
|
9
|
-
Object.defineProperty(exports, "
|
|
12
|
+
Object.defineProperty(exports, "getDefaultChatModelId", { enumerable: true, get: function () { return models_1.getDefaultChatModelId; } });
|
|
13
|
+
Object.defineProperty(exports, "resolveChatModelBasedOnInput", { enumerable: true, get: function () { return models_1.resolveChatModelBasedOnInput; } });
|
|
10
14
|
var state_1 = require("./state");
|
|
11
15
|
Object.defineProperty(exports, "CHAT_STATE_VERSIONS_MIGRATIONS_MAP", { enumerable: true, get: function () { return state_1.CHAT_STATE_VERSIONS_MIGRATIONS_MAP; } });
|
|
12
16
|
Object.defineProperty(exports, "chatStateFromModel", { enumerable: true, get: function () { return state_1.chatStateFromModel; } });
|
|
13
17
|
Object.defineProperty(exports, "createChatState", { enumerable: true, get: function () { return state_1.createChatState; } });
|
|
14
18
|
Object.defineProperty(exports, "createChatStateForMessages", { enumerable: true, get: function () { return state_1.createChatStateForMessages; } });
|
|
15
|
-
Object.defineProperty(exports, "
|
|
19
|
+
Object.defineProperty(exports, "fetchToolCallFromId", { enumerable: true, get: function () { return state_1.fetchToolCallFromId; } });
|
|
16
20
|
Object.defineProperty(exports, "getLatestDownloadBuildUrl", { enumerable: true, get: function () { return state_1.getLatestDownloadBuildUrl; } });
|
|
17
21
|
Object.defineProperty(exports, "LATEST_CHAT_STATE_VERSION", { enumerable: true, get: function () { return state_1.LATEST_CHAT_STATE_VERSION; } });
|
|
18
22
|
Object.defineProperty(exports, "migrateChatState", { enumerable: true, get: function () { return state_1.migrateChatState; } });
|
|
19
23
|
Object.defineProperty(exports, "processAttachments", { enumerable: true, get: function () { return state_1.processAttachments; } });
|
|
20
24
|
var utils_1 = require("./utils");
|
|
21
25
|
Object.defineProperty(exports, "extractAttachments", { enumerable: true, get: function () { return utils_1.extractAttachments; } });
|
|
26
|
+
Object.defineProperty(exports, "getChatAgentMode", { enumerable: true, get: function () { return utils_1.getChatAgentMode; } });
|
|
22
27
|
var tool_calls_1 = require("./utils/tool-calls");
|
|
23
28
|
Object.defineProperty(exports, "processToolCallsAndUpdateChatState", { enumerable: true, get: function () { return tool_calls_1.processToolCallsAndUpdateChatState; } });
|
|
24
29
|
Object.defineProperty(exports, "rejectPendingToolCalls", { enumerable: true, get: function () { return tool_calls_1.rejectPendingToolCalls; } });
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { LLMCache } from "@empiricalrun/llm/chat";
|
|
2
|
+
export declare class FilesystemLLMCache implements LLMCache {
|
|
3
|
+
private cacheDir;
|
|
4
|
+
constructor(cacheDir?: string);
|
|
5
|
+
private ensureCacheDir;
|
|
6
|
+
private getCacheFilePath;
|
|
7
|
+
get(key: string): Promise<string | null>;
|
|
8
|
+
set(key: string, value: string): Promise<void>;
|
|
9
|
+
clear(): Promise<void>;
|
|
10
|
+
size(): Promise<number>;
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=filesystem-cache.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"filesystem-cache.d.ts","sourceRoot":"","sources":["../../../src/agent/chat/filesystem-cache.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAKlD,qBAAa,kBAAmB,YAAW,QAAQ;IACjD,OAAO,CAAC,QAAQ,CAAS;gBAEb,QAAQ,CAAC,EAAE,MAAM;YAIf,cAAc;IAQ5B,OAAO,CAAC,gBAAgB;IAKlB,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAWxC,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAU9C,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IActB,IAAI,IAAI,OAAO,CAAC,MAAM,CAAC;CAS9B"}
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.FilesystemLLMCache = void 0;
|
|
37
|
+
const crypto = __importStar(require("crypto"));
|
|
38
|
+
const fs = __importStar(require("fs/promises"));
|
|
39
|
+
const path = __importStar(require("path"));
|
|
40
|
+
class FilesystemLLMCache {
|
|
41
|
+
cacheDir;
|
|
42
|
+
constructor(cacheDir) {
|
|
43
|
+
this.cacheDir = cacheDir || path.join(process.cwd(), ".llm-cache");
|
|
44
|
+
}
|
|
45
|
+
async ensureCacheDir() {
|
|
46
|
+
try {
|
|
47
|
+
await fs.access(this.cacheDir);
|
|
48
|
+
}
|
|
49
|
+
catch {
|
|
50
|
+
await fs.mkdir(this.cacheDir, { recursive: true });
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
getCacheFilePath(key) {
|
|
54
|
+
const hash = crypto.createHash("sha256").update(key).digest("hex");
|
|
55
|
+
return path.join(this.cacheDir, `${hash}.json`);
|
|
56
|
+
}
|
|
57
|
+
async get(key) {
|
|
58
|
+
try {
|
|
59
|
+
await this.ensureCacheDir();
|
|
60
|
+
const filePath = this.getCacheFilePath(key);
|
|
61
|
+
const data = await fs.readFile(filePath, "utf-8");
|
|
62
|
+
return data;
|
|
63
|
+
}
|
|
64
|
+
catch {
|
|
65
|
+
return null;
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
async set(key, value) {
|
|
69
|
+
try {
|
|
70
|
+
await this.ensureCacheDir();
|
|
71
|
+
const filePath = this.getCacheFilePath(key);
|
|
72
|
+
await fs.writeFile(filePath, value, "utf-8");
|
|
73
|
+
}
|
|
74
|
+
catch (error) {
|
|
75
|
+
console.warn("Failed to write to LLM cache:", error);
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
async clear() {
|
|
79
|
+
try {
|
|
80
|
+
await this.ensureCacheDir();
|
|
81
|
+
const files = await fs.readdir(this.cacheDir);
|
|
82
|
+
await Promise.all(files
|
|
83
|
+
.filter((file) => file.endsWith(".json"))
|
|
84
|
+
.map((file) => fs.unlink(path.join(this.cacheDir, file))));
|
|
85
|
+
}
|
|
86
|
+
catch (error) {
|
|
87
|
+
console.warn("Failed to clear LLM cache:", error);
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
async size() {
|
|
91
|
+
try {
|
|
92
|
+
await this.ensureCacheDir();
|
|
93
|
+
const files = await fs.readdir(this.cacheDir);
|
|
94
|
+
return files.filter((file) => file.endsWith(".json")).length;
|
|
95
|
+
}
|
|
96
|
+
catch {
|
|
97
|
+
return 0;
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
exports.FilesystemLLMCache = FilesystemLLMCache;
|
|
@@ -1,8 +1,11 @@
|
|
|
1
1
|
import { SupportedChatModels } from "@empiricalrun/shared-types";
|
|
2
2
|
export declare function fetchEnvironmentVariables(): Promise<Record<string, string>>;
|
|
3
|
-
export declare function runChatAgentForCLI({ useDiskForChatState, selectedModel, initialPromptContent, }: {
|
|
3
|
+
export declare function runChatAgentForCLI({ useDiskForChatState, selectedModel, initialPromptContent, useTriage, resetChat, useFSCache, }: {
|
|
4
4
|
selectedModel: SupportedChatModels;
|
|
5
5
|
useDiskForChatState: boolean;
|
|
6
6
|
initialPromptContent: string | undefined;
|
|
7
|
+
useTriage: boolean;
|
|
8
|
+
useFSCache: boolean;
|
|
9
|
+
resetChat: boolean;
|
|
7
10
|
}): Promise<void>;
|
|
8
11
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/agent/chat/index.ts"],"names":[],"mappings":"AAEA,OAAO,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/agent/chat/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAML,mBAAmB,EACpB,MAAM,4BAA4B,CAAC;AAwCpC,wBAAsB,yBAAyB,IAAI,OAAO,CACxD,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CACvB,CAkCA;AAED,wBAAsB,kBAAkB,CAAC,EACvC,mBAAmB,EACnB,aAAa,EACb,oBAAoB,EACpB,SAAS,EACT,SAAS,EACT,UAAU,GACX,EAAE;IACD,aAAa,EAAE,mBAAmB,CAAC;IACnC,mBAAmB,EAAE,OAAO,CAAC;IAC7B,oBAAoB,EAAE,MAAM,GAAG,SAAS,CAAC;IACzC,SAAS,EAAE,OAAO,CAAC;IACnB,UAAU,EAAE,OAAO,CAAC;IACpB,SAAS,EAAE,OAAO,CAAC;CACpB,iBA2KA"}
|
package/dist/agent/chat/index.js
CHANGED
|
@@ -6,29 +6,42 @@ const llm_1 = require("@empiricalrun/llm");
|
|
|
6
6
|
const chat_1 = require("@empiricalrun/llm/chat");
|
|
7
7
|
const picocolors_1 = require("picocolors");
|
|
8
8
|
const client_1 = require("../../dashboard/client");
|
|
9
|
-
const
|
|
9
|
+
const reader_1 = require("../../file-info/adapters/file-system/reader");
|
|
10
10
|
const human_in_the_loop_1 = require("../../human-in-the-loop");
|
|
11
|
-
const
|
|
11
|
+
const validation_1 = require("../../recorder/validation");
|
|
12
12
|
const executor_1 = require("../../tools/executor");
|
|
13
13
|
const git_1 = require("../../tools/executor/utils/git");
|
|
14
14
|
const agent_loop_1 = require("./agent-loop");
|
|
15
|
+
const filesystem_cache_1 = require("./filesystem-cache");
|
|
15
16
|
const state_1 = require("./state");
|
|
16
17
|
const utils_1 = require("./utils");
|
|
17
18
|
function stopCriteria(userPrompt) {
|
|
18
19
|
return userPrompt?.toLowerCase() === "stop";
|
|
19
20
|
}
|
|
20
21
|
function concludeAgent(chatModel, useDiskForChatState, selectedModel, error) {
|
|
21
|
-
console.log(`\n${(0, picocolors_1.gray)("Usage summary -> " +
|
|
22
|
+
console.log(`\n${(0, picocolors_1.gray)("Usage summary -> " + (0, state_1.getUsageSummary)(chatModel))}`);
|
|
22
23
|
if (useDiskForChatState) {
|
|
23
24
|
(0, state_1.saveToDisk)(chatModel.messages, selectedModel, chatModel.askUserForInput, error);
|
|
24
25
|
}
|
|
25
26
|
}
|
|
26
27
|
async function fetchEnvironmentVariables() {
|
|
27
|
-
const
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
28
|
+
const projectApiKey = process.env.EMPIRICALRUN_API_KEY;
|
|
29
|
+
let apiClient;
|
|
30
|
+
let queryParams = {};
|
|
31
|
+
if (projectApiKey) {
|
|
32
|
+
apiClient = new client_1.DashboardAPIClient({
|
|
33
|
+
authType: "project-api-key",
|
|
34
|
+
projectApiKey: process.env.EMPIRICALRUN_API_KEY,
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
else {
|
|
38
|
+
apiClient = new client_1.DashboardAPIClient({
|
|
39
|
+
authType: "user-access-token",
|
|
40
|
+
});
|
|
41
|
+
const repoName = await (0, validation_1.validatePackageJson)(process.cwd());
|
|
42
|
+
queryParams = { project_repo_name: repoName };
|
|
43
|
+
}
|
|
44
|
+
const data = await apiClient.request("/api/environment-variables", { method: "GET", params: queryParams });
|
|
32
45
|
if (!data.data || !data.data.environment_variables) {
|
|
33
46
|
console.error("Failed to fetch environment variables:", data);
|
|
34
47
|
throw new Error("Failed to fetch environment variables");
|
|
@@ -39,9 +52,13 @@ async function fetchEnvironmentVariables() {
|
|
|
39
52
|
}, {});
|
|
40
53
|
return envVars;
|
|
41
54
|
}
|
|
42
|
-
async function runChatAgentForCLI({ useDiskForChatState, selectedModel, initialPromptContent, }) {
|
|
55
|
+
async function runChatAgentForCLI({ useDiskForChatState, selectedModel, initialPromptContent, useTriage, resetChat, useFSCache, }) {
|
|
43
56
|
let chatState;
|
|
44
|
-
|
|
57
|
+
const enableStreaming = !useFSCache;
|
|
58
|
+
const cache = useFSCache ? new filesystem_cache_1.FilesystemLLMCache() : undefined;
|
|
59
|
+
if (resetChat) {
|
|
60
|
+
(0, state_1.clearChatState)();
|
|
61
|
+
}
|
|
45
62
|
if (useDiskForChatState) {
|
|
46
63
|
chatState = (0, state_1.loadChatState)();
|
|
47
64
|
}
|
|
@@ -50,11 +67,10 @@ async function runChatAgentForCLI({ useDiskForChatState, selectedModel, initialP
|
|
|
50
67
|
const branchName = `branch-${randomId}`;
|
|
51
68
|
await (0, git_1.checkoutBranch)(branchName, process.cwd());
|
|
52
69
|
let messagesLoadedFromDisk = chatState?.messages || [];
|
|
53
|
-
let chatModel = (0, chat_1.createChatModel)(messagesLoadedFromDisk, selectedModel);
|
|
70
|
+
let chatModel = (0, chat_1.createChatModel)(messagesLoadedFromDisk, selectedModel, undefined, cache);
|
|
54
71
|
chatModel.validateEnvVarsForAuth();
|
|
55
72
|
if (initialPromptContent && chatModel.messages.length === 0) {
|
|
56
73
|
chatModel.pushUserMessage(initialPromptContent, []);
|
|
57
|
-
chatModel.askUserForInput = false;
|
|
58
74
|
}
|
|
59
75
|
else if (initialPromptContent && chatModel.messages.length > 0) {
|
|
60
76
|
console.warn(`Ignoring initial prompt because we have existing messages.`);
|
|
@@ -99,6 +115,13 @@ async function runChatAgentForCLI({ useDiskForChatState, selectedModel, initialP
|
|
|
99
115
|
const traceUrl = trace.getTraceUrl();
|
|
100
116
|
console.log(`Starting ${selectedModel}: ${traceUrl}`);
|
|
101
117
|
}
|
|
118
|
+
let authType = "user-access-token";
|
|
119
|
+
if (process.env.EMPIRICALRUN_API_KEY) {
|
|
120
|
+
authType = "project-api-key";
|
|
121
|
+
}
|
|
122
|
+
const apiClient = new client_1.DashboardAPIClient({
|
|
123
|
+
authType,
|
|
124
|
+
});
|
|
102
125
|
while (!stopCriteria(userPrompt)) {
|
|
103
126
|
if (chatModel.askUserForInput) {
|
|
104
127
|
try {
|
|
@@ -132,14 +155,12 @@ async function runChatAgentForCLI({ useDiskForChatState, selectedModel, initialP
|
|
|
132
155
|
chatSession: null,
|
|
133
156
|
branchName,
|
|
134
157
|
repoPath: process.cwd(),
|
|
135
|
-
apiClient
|
|
136
|
-
authType: "user-access-token",
|
|
137
|
-
}),
|
|
158
|
+
apiClient,
|
|
138
159
|
trace,
|
|
139
160
|
featureFlags: [],
|
|
140
161
|
environmentOverrides: await fetchEnvironmentVariables(),
|
|
141
162
|
});
|
|
142
|
-
const fileInfo = await (0,
|
|
163
|
+
const fileInfo = await (0, reader_1.getFileInfoFromFS)(process.cwd());
|
|
143
164
|
await (0, agent_loop_1.chatAgentLoop)({
|
|
144
165
|
chatModel,
|
|
145
166
|
selectedModel,
|
|
@@ -170,16 +191,17 @@ async function runChatAgentForCLI({ useDiskForChatState, selectedModel, initialP
|
|
|
170
191
|
})(),
|
|
171
192
|
trace,
|
|
172
193
|
repoInfo: fileInfo,
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
featureFlags: [
|
|
194
|
+
onPendingToolCall: async (toolCalls) => {
|
|
195
|
+
const toolResults = await toolExecutor.execute(toolCalls);
|
|
196
|
+
chatModel.pushToolResultsMessage(toolCalls, toolResults);
|
|
197
|
+
},
|
|
198
|
+
featureFlags: [],
|
|
199
|
+
mode: (0, utils_1.getChatAgentMode)(useTriage ? "triage" : "test_generation"),
|
|
178
200
|
});
|
|
179
201
|
}
|
|
180
202
|
}
|
|
181
203
|
trace?.update({ output: { messages: chatModel.messages } });
|
|
182
204
|
await llm_1.langfuseInstance?.flushAsync();
|
|
183
|
-
const usageSummary =
|
|
205
|
+
const usageSummary = (0, state_1.getUsageSummary)(chatModel);
|
|
184
206
|
console.log(`\n${(0, picocolors_1.gray)("Usage summary -> " + usageSummary)}`);
|
|
185
207
|
}
|