@empiricalrun/test-gen 0.57.2 → 0.58.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.
Files changed (118) hide show
  1. package/CHANGELOG.md +16 -0
  2. package/dist/actions/index.d.ts.map +1 -1
  3. package/dist/actions/skill.js +2 -2
  4. package/dist/actions/utils/index.js +2 -3
  5. package/dist/agent/browsing/index.js +1 -2
  6. package/dist/agent/browsing/run.js +1 -2
  7. package/dist/agent/browsing/utils.js +10 -10
  8. package/dist/agent/chat/agent-loop.d.ts +5 -3
  9. package/dist/agent/chat/agent-loop.d.ts.map +1 -1
  10. package/dist/agent/chat/agent-loop.js +3 -4
  11. package/dist/agent/chat/exports.d.ts +4 -4
  12. package/dist/agent/chat/exports.d.ts.map +1 -1
  13. package/dist/agent/chat/exports.js +19 -9
  14. package/dist/agent/chat/index.d.ts +1 -1
  15. package/dist/agent/chat/index.d.ts.map +1 -1
  16. package/dist/agent/chat/index.js +10 -6
  17. package/dist/agent/chat/prompt.d.ts +2 -1
  18. package/dist/agent/chat/prompt.d.ts.map +1 -1
  19. package/dist/agent/chat/prompt.js +3 -4
  20. package/dist/agent/chat/repo.d.ts +2 -1
  21. package/dist/agent/chat/repo.d.ts.map +1 -1
  22. package/dist/agent/chat/repo.js +32 -36
  23. package/dist/agent/chat/state.d.ts +1 -2
  24. package/dist/agent/chat/state.d.ts.map +1 -1
  25. package/dist/agent/chat/state.js +8 -8
  26. package/dist/agent/codegen/create-test-block.js +1 -2
  27. package/dist/agent/codegen/fix-ts-errors.js +1 -2
  28. package/dist/agent/codegen/generate-code-apply-changes.js +2 -3
  29. package/dist/agent/codegen/lexical-scoped-vars.js +1 -2
  30. package/dist/agent/codegen/repo-edit.js +2 -3
  31. package/dist/agent/codegen/run.js +2 -3
  32. package/dist/agent/codegen/skills-retriever.d.ts +3 -3
  33. package/dist/agent/codegen/skills-retriever.d.ts.map +1 -1
  34. package/dist/agent/codegen/skills-retriever.js +2 -2
  35. package/dist/agent/codegen/test-update-feedback.js +1 -2
  36. package/dist/agent/codegen/update-flow.js +4 -5
  37. package/dist/agent/codegen/use-skill.js +1 -2
  38. package/dist/agent/codegen/utils.js +9 -10
  39. package/dist/agent/cua/computer.js +3 -4
  40. package/dist/agent/cua/index.js +2 -3
  41. package/dist/agent/cua/model.js +1 -2
  42. package/dist/agent/diagnosis-agent/index.js +2 -3
  43. package/dist/agent/diagnosis-agent/strict-mode-violation.js +1 -2
  44. package/dist/agent/enrich-prompt/index.d.ts +1 -1
  45. package/dist/agent/enrich-prompt/index.d.ts.map +1 -1
  46. package/dist/agent/enrich-prompt/utils.js +1 -2
  47. package/dist/agent/infer-agent/index.js +1 -2
  48. package/dist/agent/master/action-tool-calls.js +3 -3
  49. package/dist/agent/master/element-annotation.js +2 -3
  50. package/dist/agent/master/execute-browser-action.d.ts +1 -1
  51. package/dist/agent/master/execute-browser-action.d.ts.map +1 -1
  52. package/dist/agent/master/execute-browser-action.js +1 -2
  53. package/dist/agent/master/execute-skill-action.js +1 -2
  54. package/dist/agent/master/icon-descriptor/index.js +6 -7
  55. package/dist/agent/master/icon-descriptor/normalize-svg.js +1 -2
  56. package/dist/agent/master/next-action.js +1 -2
  57. package/dist/agent/master/planner.d.ts.map +1 -1
  58. package/dist/agent/master/planner.js +1 -2
  59. package/dist/agent/master/run.js +3 -3
  60. package/dist/agent/master/scroller.js +1 -2
  61. package/dist/agent/master/with-hints.d.ts +1 -1
  62. package/dist/agent/master/with-hints.d.ts.map +1 -1
  63. package/dist/agent/planner/run-time-planner.d.ts.map +1 -1
  64. package/dist/agent/planner/run-time-planner.js +1 -2
  65. package/dist/agent/planner/run.js +1 -2
  66. package/dist/bin/logger/index.js +2 -2
  67. package/dist/bin/utils/context.js +5 -6
  68. package/dist/bin/utils/fs/index.d.ts.map +1 -1
  69. package/dist/bin/utils/fs/index.js +4 -5
  70. package/dist/bin/utils/index.js +2 -3
  71. package/dist/bin/utils/platform/web/index.d.ts.map +1 -1
  72. package/dist/bin/utils/platform/web/index.js +21 -21
  73. package/dist/bin/utils/scenarios/index.js +3 -4
  74. package/dist/constants/index.js +1 -1
  75. package/dist/file/server.js +2 -2
  76. package/dist/human-in-the-loop/cli.js +1 -2
  77. package/dist/human-in-the-loop/ipc.js +2 -3
  78. package/dist/index.js +1 -2
  79. package/dist/prompts/lib/ts-transformer.js +17 -7
  80. package/dist/reporter/index.js +3 -3
  81. package/dist/reporter/lib.js +1 -1
  82. package/dist/session/index.js +6 -7
  83. package/dist/test-build/index.js +2 -3
  84. package/dist/tool-call-service/index.d.ts +1 -2
  85. package/dist/tool-call-service/index.d.ts.map +1 -1
  86. package/dist/tools/commit-and-create-pr.js +2 -2
  87. package/dist/tools/grep/ripgrep/index.js +2 -3
  88. package/dist/tools/grep/ripgrep/types.d.ts +0 -2
  89. package/dist/tools/grep/ripgrep/types.d.ts.map +1 -1
  90. package/dist/tools/str_replace_editor.js +3 -3
  91. package/dist/tools/test-run-fetcher/index.js +2 -2
  92. package/dist/tools/utils/index.js +2 -3
  93. package/dist/types/index.d.ts +8 -0
  94. package/dist/types/index.d.ts.map +1 -1
  95. package/dist/uploader/index.js +6 -6
  96. package/dist/uploader/utils.d.ts.map +1 -1
  97. package/dist/uploader/utils.js +2 -2
  98. package/dist/utils/checkpoint.js +1 -2
  99. package/dist/utils/env.js +1 -2
  100. package/dist/utils/exec.js +2 -2
  101. package/dist/utils/file-tree.d.ts +3 -0
  102. package/dist/utils/file-tree.d.ts.map +1 -0
  103. package/dist/utils/file-tree.js +42 -0
  104. package/dist/utils/file.js +1 -2
  105. package/dist/utils/git.js +7 -8
  106. package/dist/utils/html.d.ts.map +1 -1
  107. package/dist/utils/pw-test.js +1 -2
  108. package/dist/utils/repo-tree.d.ts +2 -1
  109. package/dist/utils/repo-tree.d.ts.map +1 -1
  110. package/dist/utils/repo-tree.js +62 -53
  111. package/dist/utils/slug.d.ts.map +1 -1
  112. package/dist/utils/slug.js +1 -1
  113. package/dist/utils/string.js +1 -2
  114. package/package.json +5 -5
  115. package/tsconfig.tsbuildinfo +1 -0
  116. package/dist/agent/chat/model.d.ts +0 -4
  117. package/dist/agent/chat/model.d.ts.map +0 -1
  118. package/dist/agent/chat/model.js +0 -17
package/CHANGELOG.md CHANGED
@@ -1,5 +1,21 @@
1
1
  # @empiricalrun/test-gen
2
2
 
3
+ ## 0.58.0
4
+
5
+ ### Minor Changes
6
+
7
+ - 8c71fd1: feat: pass file info to system prompt to construct repo context
8
+
9
+ ### Patch Changes
10
+
11
+ - 637c97f: chore: moved model creation logic from test-gen to llm
12
+ - Updated dependencies [0634233]
13
+ - Updated dependencies [637c97f]
14
+ - Updated dependencies [21b0768]
15
+ - @empiricalrun/test-run@0.8.5
16
+ - @empiricalrun/llm@0.15.4
17
+ - @empiricalrun/r2-uploader@0.3.9
18
+
3
19
  ## 0.57.2
4
20
 
5
21
  ### Patch Changes
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/actions/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAIhD,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAEtC,OAAO,EAEL,UAAU,EACV,YAAY,EAEb,MAAM,UAAU,CAAC;AAWlB,qBAAa,iBAAiB;IAQ1B,OAAO,CAAC,IAAI;IACZ,OAAO,CAAC,cAAc;IARxB,OAAO,CAAC,gBAAgB,CAAwC;IAChE,OAAO,CAAC,eAAe,CAInB;gBAEM,IAAI,EAAE,WAAW,EACjB,cAAc,GAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAM;IAgB5C,aAAa,CACjB,IAAI,oBAAa,EACjB,IAAI,EAAE,UAAU,EAChB,KAAK,CAAC,EAAE,WAAW,GAClB,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IA0D9B,wBAAwB,IAAI,YAAY,EAAE;IAoB1C,sBAAsB,IAAI,YAAY,EAAE;IAWxC,YAAY,IAAI;QACd,IAAI,EAAE,MAAM,CAAC;QACb,WAAW,EAAE,MAAM,EAAE,CAAC;KACvB;IAUD,gBAAgB,CAAC,KAAK,EAAE,MAAM;IAK9B;;;;;;OAMG;IACH,aAAa,IAAI,OAAO;IAQxB,UAAU;IAWV,iBAAiB;IAIjB,iBAAiB,CAAC,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;CAItD"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/actions/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAIhD,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAEtC,OAAO,EAEL,UAAU,EACV,YAAY,EAEb,MAAM,UAAU,CAAC;AAWlB,qBAAa,iBAAiB;IAQ1B,OAAO,CAAC,IAAI;IACZ,OAAO,CAAC,cAAc;IARxB,OAAO,CAAC,gBAAgB,CAAwC;IAChE,OAAO,CAAC,eAAe,CAInB;gBAEM,IAAI,EAAE,WAAW,EACjB,cAAc,GAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAM;IAgB5C,aAAa,CACjB,IAAI,EAAE,MAAM,YAAK,EACjB,IAAI,EAAE,UAAU,EAChB,KAAK,CAAC,EAAE,WAAW,GAClB,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IA0D9B,wBAAwB,IAAI,YAAY,EAAE;IAoB1C,sBAAsB,IAAI,YAAY,EAAE;IAWxC,YAAY,IAAI;QACd,IAAI,EAAE,MAAM,CAAC;QACb,WAAW,EAAE,MAAM,EAAE,CAAC;KACvB;IAUD,gBAAgB,CAAC,KAAK,EAAE,MAAM;IAK9B;;;;;;OAMG;IACH,aAAa,IAAI,OAAO;IAQxB,UAAU;IAWV,iBAAiB;IAIjB,iBAAiB,CAAC,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;CAItD"}
@@ -3,7 +3,8 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.skillActionGenerator = exports.extractSkillFromArgs = exports.testCaseSkills = exports.SKILL_USAGE = void 0;
6
+ exports.skillActionGenerator = exports.testCaseSkills = exports.SKILL_USAGE = void 0;
7
+ exports.extractSkillFromArgs = extractSkillFromArgs;
7
8
  const promises_1 = __importDefault(require("fs/promises"));
8
9
  const api_1 = __importDefault(require("tsx/cjs/api"));
9
10
  const use_skill_1 = require("../agent/codegen/use-skill");
@@ -28,7 +29,6 @@ function extractSkillFromArgs(args) {
28
29
  const [skillDetails] = availableSkills.filter((skillDetails) => skillDetails.testStep === skill);
29
30
  return { skillDetails };
30
31
  }
31
- exports.extractSkillFromArgs = extractSkillFromArgs;
32
32
  const skillActionGenerator = (page, options) => {
33
33
  const availableSkills = exports.testCaseSkills.getAvailableSkills();
34
34
  return {
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getPageVarName = exports.getPlaywrightLocatorUsingCssSelector = void 0;
3
+ exports.getPlaywrightLocatorUsingCssSelector = getPlaywrightLocatorUsingCssSelector;
4
+ exports.getPageVarName = getPageVarName;
4
5
  async function getPlaywrightLocatorUsingCssSelector(cssSelector, xpath, page, elementAnnotation) {
5
6
  // TODO: analyse other solutions than just css. Also find other solutions to support :has-text -> prompting ?
6
7
  // jquery doesnt support :has-text. neither css. Only playwright locator supports this selector though.
@@ -101,9 +102,7 @@ async function getPlaywrightLocatorUsingCssSelector(cssSelector, xpath, page, el
101
102
  elementAnnotation,
102
103
  });
103
104
  }
104
- exports.getPlaywrightLocatorUsingCssSelector = getPlaywrightLocatorUsingCssSelector;
105
105
  function getPageVarName() {
106
106
  // eslint-disable-next-line turbo/no-undeclared-env-vars
107
107
  return process.env.PAGE_VAR_NAME || "page";
108
108
  }
109
- exports.getPageVarName = getPageVarName;
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.executeTaskUsingBrowsingAgent = void 0;
3
+ exports.executeTaskUsingBrowsingAgent = executeTaskUsingBrowsingAgent;
4
4
  const llm_1 = require("@empiricalrun/llm");
5
5
  const constants_1 = require("../../constants");
6
6
  const promptTemplate_0 = "{{#section \"system\"}}\nYou are a browser automation agent who is given a task to generate code for navigation and assertion. This task is your\ngoal and you must achieve it.\n\nYou will be provided with already executed actions and basis that you need to pick the next step to achieve the task.\nRemember that the goal must be achieved.\n\nYou will be provided with the web page snapshot in the form of Document Object Model. Based on the goal and available\ntool calls you need to pick the appropriate tool call.\n\nInstructions:\n- Take actions one at a time. Do not try to take multiple actions\n- You can respond with multiple assertions in one shot\n- Do not repeat the same actions again otherwise your response will be marked INVALID\n- Avoid repeating errors which we got while executing the last action\n- Stick to the task provided to you and mark the task done once the task is complete\n- Do not execute any action which is not mentioned in the task\n- Do not repeat actions which are already executed more than twice otherwise your response will be marked INVALID\n- Always refer to \"Executed actions\" before deciding your next action for completion of the task.\n- End the task done if all actions required for task are executed\n{{/section}}\n\n{{#section \"user\"}}\nTask:\n{{task}}\n\nCurrent page snapshot:\n{{pageSnapshot}}\n{{/section}}";
@@ -64,4 +64,3 @@ async function executeTaskUsingBrowsingAgent({ action, page, actions, llm, trace
64
64
  toolCallsSpan?.end({ output: { toolCalls, generatedCodeSteps } });
65
65
  return generatedCodeSteps;
66
66
  }
67
- exports.executeTaskUsingBrowsingAgent = executeTaskUsingBrowsingAgent;
@@ -3,7 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.generateTestsUsingMasterAgent = void 0;
6
+ exports.generateTestsUsingMasterAgent = generateTestsUsingMasterAgent;
7
7
  const detect_port_1 = __importDefault(require("detect-port"));
8
8
  const fs_1 = __importDefault(require("fs"));
9
9
  const web_1 = require("../../bin/utils/platform/web");
@@ -88,4 +88,3 @@ async function generateTestsUsingMasterAgent({ testFilePath, filePathToUpdate, p
88
88
  actionsSummary: fileServer.getActionsSummary(),
89
89
  };
90
90
  }
91
- exports.generateTestsUsingMasterAgent = generateTestsUsingMasterAgent;
@@ -3,7 +3,16 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.TeardownManager = exports.detectProjectName = exports.getValidProjectNames = exports.readPlaywrightConfig = exports.injectPwLocatorGenerator = exports.prepareFileForMasterAgent = exports.markTestAsOnly = exports.replaceTodoWithCreateTest = exports.prepareBrowsingAgentTask = exports.isRegExp = void 0;
6
+ exports.TeardownManager = void 0;
7
+ exports.isRegExp = isRegExp;
8
+ exports.prepareBrowsingAgentTask = prepareBrowsingAgentTask;
9
+ exports.replaceTodoWithCreateTest = replaceTodoWithCreateTest;
10
+ exports.markTestAsOnly = markTestAsOnly;
11
+ exports.prepareFileForMasterAgent = prepareFileForMasterAgent;
12
+ exports.injectPwLocatorGenerator = injectPwLocatorGenerator;
13
+ exports.readPlaywrightConfig = readPlaywrightConfig;
14
+ exports.getValidProjectNames = getValidProjectNames;
15
+ exports.detectProjectName = detectProjectName;
7
16
  const fs_1 = __importDefault(require("fs"));
8
17
  const minimatch_1 = require("minimatch");
9
18
  const path_1 = __importDefault(require("path"));
@@ -22,13 +31,11 @@ function isRegExp(obj) {
22
31
  return (obj instanceof RegExp ||
23
32
  Object.prototype.toString.call(obj) === "[object RegExp]");
24
33
  }
25
- exports.isRegExp = isRegExp;
26
34
  function prepareBrowsingAgentTask(steps) {
27
35
  const sanitizedSteps = steps.map((step) => step.replace(/`/g, "\\`"));
28
36
  const task = `${sanitizedSteps.join("\n")}\n`;
29
37
  return task;
30
38
  }
31
- exports.prepareBrowsingAgentTask = prepareBrowsingAgentTask;
32
39
  async function addImportForCreateTest(testFilePath) {
33
40
  // Instead of using "@empiricalrun/test-gen", we use the local dist file
34
41
  // This is to avoid assuming that the test-gen package is installed in the project
@@ -108,7 +115,6 @@ async function replaceTodoWithCreateTest({ testFilePath, testCaseName, testCaseS
108
115
  specPath: testFilePath,
109
116
  });
110
117
  }
111
- exports.replaceTodoWithCreateTest = replaceTodoWithCreateTest;
112
118
  async function markTestAsOnly({ testCaseName, testCaseSuites, specPath, }) {
113
119
  const testFileContent = fs_1.default.readFileSync(specPath, "utf-8");
114
120
  const { testBlock, testNode } = (0, web_1.getTypescriptTestBlock)({
@@ -124,7 +130,6 @@ async function markTestAsOnly({ testCaseName, testCaseSuites, specPath, }) {
124
130
  fs_1.default.writeFileSync(specPath, updatedTestFileContent);
125
131
  }
126
132
  }
127
- exports.markTestAsOnly = markTestAsOnly;
128
133
  async function prepareFileForMasterAgent({ testCase, specPath, trace, }) {
129
134
  const prepareFileSpan = trace?.span({
130
135
  name: "prepare-file-for-master-agent",
@@ -170,7 +175,6 @@ async function prepareFileForMasterAgent({ testCase, specPath, trace, }) {
170
175
  });
171
176
  return updatePath;
172
177
  }
173
- exports.prepareFileForMasterAgent = prepareFileForMasterAgent;
174
178
  function newContentsWithTestOnly(existingContents, originalTestBlock, updatedTestBlock, parentDescribeBlock) {
175
179
  if (!parentDescribeBlock) {
176
180
  const testMarkedAsOnly = updatedTestBlock.replace("test(", "test.only(");
@@ -290,7 +294,6 @@ async function injectPwLocatorGenerator(page) {
290
294
  console.warn("Error injecting script in iframe.");
291
295
  }
292
296
  }
293
- exports.injectPwLocatorGenerator = injectPwLocatorGenerator;
294
297
  /**
295
298
  * function to read playwright config from the source repo
296
299
  * @return {*} {Promise<PlaywrightTestConfig>}
@@ -318,7 +321,6 @@ async function readPlaywrightConfig(repoDir) {
318
321
  const playwrightConfig = (await tsxImport.require("./playwright.config.ts", `${repoDir}/${lastDir}`)).default;
319
322
  return playwrightConfig;
320
323
  }
321
- exports.readPlaywrightConfig = readPlaywrightConfig;
322
324
  function matchAgainstPattern(pattern, filePathToTest) {
323
325
  if (isRegExp(pattern)) {
324
326
  const regExp = pattern;
@@ -337,7 +339,6 @@ async function getValidProjectNames(playwrightConfig) {
337
339
  .filter((p) => !!p);
338
340
  return filteredProjectNames;
339
341
  }
340
- exports.getValidProjectNames = getValidProjectNames;
341
342
  /**
342
343
  * detect the project name for the given file in playwright test repo
343
344
  * if project and test file path for running test don't match, then playwright throws error
@@ -387,7 +388,6 @@ async function detectProjectName(testFilePath, playwrightConfig, pwProjectsFilte
387
388
  }
388
389
  return filteredProjectNames[0];
389
390
  }
390
- exports.detectProjectName = detectProjectName;
391
391
  class TeardownManager {
392
392
  directory;
393
393
  constructor(directory) {
@@ -1,12 +1,14 @@
1
1
  import { TraceClient } from "@empiricalrun/llm";
2
- import { IChatModel } from "@empiricalrun/llm/chat";
2
+ import { IChatModel, SupportedChatModels } from "@empiricalrun/llm/chat";
3
3
  import { ToolCallService } from "../../tool-call-service";
4
- import { ReporterFunction, SupportedChatModels } from "./types";
5
- export declare function chatAgentLoop({ chatModel, selectedModel, reporter, trace, toolCallService, }: {
4
+ import { FileInfo } from "../../types";
5
+ import { ReporterFunction } from "./types";
6
+ export declare function chatAgentLoop({ chatModel, selectedModel, reporter, trace, toolCallService, fileInfo, }: {
6
7
  chatModel: IChatModel<any>;
7
8
  selectedModel: SupportedChatModels;
8
9
  toolCallService: ToolCallService;
9
10
  reporter: ReporterFunction;
10
11
  trace?: TraceClient;
12
+ fileInfo: FileInfo;
11
13
  }): Promise<void>;
12
14
  //# 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,EAAmB,MAAM,wBAAwB,CAAC;AAGrE,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAG1D,OAAO,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAgBhE,wBAAsB,aAAa,CAAC,EAClC,SAAS,EACT,aAAa,EACb,QAAQ,EACR,KAAK,EACL,eAAe,GAChB,EAAE;IACD,SAAS,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC;IAC3B,aAAa,EAAE,mBAAmB,CAAC;IACnC,eAAe,EAAE,eAAe,CAAC;IACjC,QAAQ,EAAE,gBAAgB,CAAC;IAC3B,KAAK,CAAC,EAAE,WAAW,CAAC;CACrB,iBAoCA"}
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,EACL,UAAU,EACV,mBAAmB,EAEpB,MAAM,wBAAwB,CAAC;AAGhC,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAGvC,OAAO,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAgB3C,wBAAsB,aAAa,CAAC,EAClC,SAAS,EACT,aAAa,EACb,QAAQ,EACR,KAAK,EACL,eAAe,EACf,QAAQ,GACT,EAAE;IACD,SAAS,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC;IAC3B,aAAa,EAAE,mBAAmB,CAAC;IACnC,eAAe,EAAE,eAAe,CAAC;IACjC,QAAQ,EAAE,gBAAgB,CAAC;IAC3B,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,QAAQ,EAAE,QAAQ,CAAC;CACpB,iBAoCA"}
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.chatAgentLoop = void 0;
3
+ exports.chatAgentLoop = chatAgentLoop;
4
4
  const chat_1 = require("@empiricalrun/llm/chat");
5
5
  const picocolors_1 = require("picocolors");
6
6
  const prompt_1 = require("./prompt");
@@ -18,8 +18,8 @@ const log = (...args) => {
18
18
  console.log((0, picocolors_1.gray)(args.join(" ")));
19
19
  };
20
20
  const isRemote = process.env.TOOL_EXECUTION_IS_REMOTE === "true" || false;
21
- async function chatAgentLoop({ chatModel, selectedModel, reporter, trace, toolCallService, }) {
22
- const systemPrompt = await (0, prompt_1.buildSystemPrompt)();
21
+ async function chatAgentLoop({ chatModel, selectedModel, reporter, trace, toolCallService, fileInfo, }) {
22
+ const systemPrompt = await (0, prompt_1.buildSystemPrompt)(fileInfo);
23
23
  trace?.update({ input: { systemPrompt } });
24
24
  const { tools } = await toolCallService.getTools();
25
25
  while (!chatModel.askUserForInput) {
@@ -47,4 +47,3 @@ async function chatAgentLoop({ chatModel, selectedModel, reporter, trace, toolCa
47
47
  await reporter((0, state_1.chatStateFromModel)(chatModel, selectedModel), latest);
48
48
  }
49
49
  }
50
- exports.chatAgentLoop = chatAgentLoop;
@@ -1,10 +1,10 @@
1
- import { IChatModel } from "@empiricalrun/llm/chat";
1
+ import { createChatModel, IChatModel, SupportedChatModels } from "@empiricalrun/llm/chat";
2
+ import { FileInfo } from "../../types";
2
3
  import { chatAgentLoop } from "./agent-loop";
3
- import { createChatModel } from "./model";
4
4
  import * as State from "./state";
5
5
  import { ChatStateOnDisk } from "./state";
6
- import { ReporterFunction, SupportedChatModels } from "./types";
6
+ import { ReporterFunction } from "./types";
7
7
  declare const createChatState: typeof State.createChatState, createChatStateForMessages: typeof State.createChatStateForMessages, chatStateFromModel: typeof State.chatStateFromModel, loadChatState: typeof State.loadChatState, saveToDisk: typeof State.saveToDisk, CURRENT_CHAT_STATE_VERSION: string;
8
8
  export { chatAgentLoop, chatStateFromModel, createChatModel, createChatState, createChatStateForMessages, CURRENT_CHAT_STATE_VERSION, loadChatState, saveToDisk, };
9
- export type { ChatStateOnDisk, IChatModel, ReporterFunction, SupportedChatModels, };
9
+ export type { ChatStateOnDisk, FileInfo, IChatModel, ReporterFunction, SupportedChatModels, };
10
10
  //# sourceMappingURL=exports.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"exports.d.ts","sourceRoot":"","sources":["../../../src/agent/chat/exports.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAEpD,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAC1C,OAAO,KAAK,KAAK,MAAM,SAAS,CAAC;AACjC,OAAO,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAC1C,OAAO,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAEhE,QAAA,MACE,eAAe,gCACf,0BAA0B,2CAC1B,kBAAkB,mCAClB,aAAa,8BACb,UAAU,2BACV,0BAA0B,QACnB,CAAC;AAEV,OAAO,EACL,aAAa,EACb,kBAAkB,EAClB,eAAe,EACf,eAAe,EACf,0BAA0B,EAC1B,0BAA0B,EAC1B,aAAa,EACb,UAAU,GACX,CAAC;AAEF,YAAY,EACV,eAAe,EACf,UAAU,EACV,gBAAgB,EAChB,mBAAmB,GACpB,CAAC"}
1
+ {"version":3,"file":"exports.d.ts","sourceRoot":"","sources":["../../../src/agent/chat/exports.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,eAAe,EACf,UAAU,EACV,mBAAmB,EACpB,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,KAAK,KAAK,MAAM,SAAS,CAAC;AACjC,OAAO,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAC1C,OAAO,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAE3C,QAAA,MACE,eAAe,gCACf,0BAA0B,2CAC1B,kBAAkB,mCAClB,aAAa,8BACb,UAAU,2BACV,0BAA0B,QACnB,CAAC;AAEV,OAAO,EACL,aAAa,EACb,kBAAkB,EAClB,eAAe,EACf,eAAe,EACf,0BAA0B,EAC1B,0BAA0B,EAC1B,aAAa,EACb,UAAU,GACX,CAAC;AAEF,YAAY,EACV,eAAe,EACf,QAAQ,EACR,UAAU,EACV,gBAAgB,EAChB,mBAAmB,GACpB,CAAC"}
@@ -15,19 +15,29 @@ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (
15
15
  }) : function(o, v) {
16
16
  o["default"] = v;
17
17
  });
18
- var __importStar = (this && this.__importStar) || function (mod) {
19
- if (mod && mod.__esModule) return mod;
20
- var result = {};
21
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
- __setModuleDefault(result, mod);
23
- return result;
24
- };
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
+ })();
25
35
  Object.defineProperty(exports, "__esModule", { value: true });
26
36
  exports.saveToDisk = exports.loadChatState = exports.CURRENT_CHAT_STATE_VERSION = exports.createChatStateForMessages = exports.createChatState = exports.createChatModel = exports.chatStateFromModel = exports.chatAgentLoop = void 0;
37
+ const chat_1 = require("@empiricalrun/llm/chat");
38
+ Object.defineProperty(exports, "createChatModel", { enumerable: true, get: function () { return chat_1.createChatModel; } });
27
39
  const agent_loop_1 = require("./agent-loop");
28
40
  Object.defineProperty(exports, "chatAgentLoop", { enumerable: true, get: function () { return agent_loop_1.chatAgentLoop; } });
29
- const model_1 = require("./model");
30
- Object.defineProperty(exports, "createChatModel", { enumerable: true, get: function () { return model_1.createChatModel; } });
31
41
  const State = __importStar(require("./state"));
32
42
  const { createChatState, createChatStateForMessages, chatStateFromModel, loadChatState, saveToDisk, CURRENT_CHAT_STATE_VERSION, } = State;
33
43
  exports.createChatState = createChatState;
@@ -1,4 +1,4 @@
1
- import { SupportedChatModels } from "./types";
1
+ import { SupportedChatModels } from "@empiricalrun/llm/chat";
2
2
  export declare function runChatAgentForCLI({ useDiskForChatState, selectedModel, initialPromptContent, }: {
3
3
  selectedModel: SupportedChatModels;
4
4
  useDiskForChatState: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/agent/chat/index.ts"],"names":[],"mappings":"AAUA,OAAO,EAAoB,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAiBhE,wBAAsB,kBAAkB,CAAC,EACvC,mBAAmB,EACnB,aAAa,EACb,oBAAoB,GACrB,EAAE;IACD,aAAa,EAAE,mBAAmB,CAAC;IACnC,mBAAmB,EAAE,OAAO,CAAC;IAC7B,oBAAoB,EAAE,MAAM,GAAG,SAAS,CAAC;CAC1C,iBA8FA;AA0BD,wBAAsB,wBAAwB,CAAC,EAC7C,aAAa,EACb,aAAa,GACd,EAAE;IACD,aAAa,EAAE,mBAAmB,CAAC;IACnC,aAAa,EAAE,MAAM,CAAC;CACvB,iBA8CA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/agent/chat/index.ts"],"names":[],"mappings":"AACA,OAAO,EAGL,mBAAmB,EACpB,MAAM,wBAAwB,CAAC;AA0BhC,wBAAsB,kBAAkB,CAAC,EACvC,mBAAmB,EACnB,aAAa,EACb,oBAAoB,GACrB,EAAE;IACD,aAAa,EAAE,mBAAmB,CAAC;IACnC,mBAAmB,EAAE,OAAO,CAAC;IAC7B,oBAAoB,EAAE,MAAM,GAAG,SAAS,CAAC;CAC1C,iBAgGA;AA0BD,wBAAsB,wBAAwB,CAAC,EAC7C,aAAa,EACb,aAAa,GACd,EAAE;IACD,aAAa,EAAE,mBAAmB,CAAC;IACnC,aAAa,EAAE,MAAM,CAAC;CACvB,iBAkDA"}
@@ -1,13 +1,15 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.runChatAgentForDashboard = exports.runChatAgentForCLI = void 0;
3
+ exports.runChatAgentForCLI = runChatAgentForCLI;
4
+ exports.runChatAgentForDashboard = runChatAgentForDashboard;
4
5
  const llm_1 = require("@empiricalrun/llm");
6
+ const chat_1 = require("@empiricalrun/llm/chat");
5
7
  const picocolors_1 = require("picocolors");
6
8
  const human_in_the_loop_1 = require("../../human-in-the-loop");
7
9
  const tool_call_service_1 = require("../../tool-call-service");
10
+ const file_tree_1 = require("../../utils/file-tree");
8
11
  const git_1 = require("../../utils/git");
9
12
  const agent_loop_1 = require("./agent-loop");
10
- const model_1 = require("./model");
11
13
  const state_1 = require("./state");
12
14
  function stopCriteria(userPrompt) {
13
15
  return userPrompt?.toLowerCase() === "stop";
@@ -28,7 +30,7 @@ async function runChatAgentForCLI({ useDiskForChatState, selectedModel, initialP
28
30
  const branchName = `branch-${randomId}`;
29
31
  await (0, git_1.checkoutBranch)(branchName);
30
32
  let messagesLoadedFromDisk = chatState?.messages || [];
31
- let chatModel = (0, model_1.createChatModel)(messagesLoadedFromDisk, selectedModel);
33
+ let chatModel = (0, chat_1.createChatModel)(messagesLoadedFromDisk, selectedModel);
32
34
  if (initialPromptContent && chatModel.messages.length === 0) {
33
35
  chatModel.pushUserMessage(initialPromptContent);
34
36
  chatModel.askUserForInput = false;
@@ -89,12 +91,14 @@ async function runChatAgentForCLI({ useDiskForChatState, selectedModel, initialP
89
91
  else {
90
92
  // TODO: Should we pass a loader function? That would allow us to show a spinner
91
93
  const toolCallService = new tool_call_service_1.ToolCallService(null, selectedModel, branchName);
94
+ const fileInfo = await (0, file_tree_1.getFileInfoFromFS)(process.cwd());
92
95
  await (0, agent_loop_1.chatAgentLoop)({
93
96
  chatModel,
94
97
  selectedModel,
95
98
  reporter: reporterFunc,
96
99
  trace,
97
100
  toolCallService,
101
+ fileInfo,
98
102
  });
99
103
  }
100
104
  }
@@ -107,7 +111,6 @@ async function runChatAgentForCLI({ useDiskForChatState, selectedModel, initialP
107
111
  const usageSummary = chatModel.getUsageSummary();
108
112
  console.log(`\n${(0, picocolors_1.gray)("Usage summary -> " + usageSummary)}`);
109
113
  }
110
- exports.runChatAgentForCLI = runChatAgentForCLI;
111
114
  const DASHBOARD_DOMAIN = process.env.DASHBOARD_DOMAIN || "https://dash.empirical.run";
112
115
  async function getChatSessionFromDashboard(chatSessionId) {
113
116
  const response = await fetch(`${DASHBOARD_DOMAIN}/api/chat-sessions/${chatSessionId}`, {
@@ -137,7 +140,7 @@ async function runChatAgentForDashboard({ chatSessionId, selectedModel, }) {
137
140
  });
138
141
  const toolCallService = new tool_call_service_1.ToolCallService(chatSessionId, selectedModel, branchName);
139
142
  await (0, git_1.checkoutBranch)(branchName);
140
- let chatModel = (0, model_1.createChatModel)(chatState.messages, selectedModel);
143
+ let chatModel = (0, chat_1.createChatModel)(chatState.messages, selectedModel);
141
144
  let reporterFunc = async (chatState, latest) => {
142
145
  const response = await fetch(`${DASHBOARD_DOMAIN}/api/chat-sessions/${chatSessionId}`, {
143
146
  method: "PATCH",
@@ -153,12 +156,13 @@ async function runChatAgentForDashboard({ chatSessionId, selectedModel, }) {
153
156
  const data = await response.json();
154
157
  console.log(`Patch request sent for chat session: ${JSON.stringify(data)}`);
155
158
  };
159
+ const fileInfo = await (0, file_tree_1.getFileInfoFromFS)(process.cwd());
156
160
  await (0, agent_loop_1.chatAgentLoop)({
157
161
  chatModel,
158
162
  selectedModel,
159
163
  reporter: reporterFunc,
160
164
  trace,
161
165
  toolCallService,
166
+ fileInfo,
162
167
  });
163
168
  }
164
- exports.runChatAgentForDashboard = runChatAgentForDashboard;
@@ -1,2 +1,3 @@
1
- export declare function buildSystemPrompt(): Promise<string>;
1
+ import { FileInfo } from "../../types";
2
+ export declare function buildSystemPrompt(fileInfo: FileInfo): Promise<string>;
2
3
  //# sourceMappingURL=prompt.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"prompt.d.ts","sourceRoot":"","sources":["../../../src/agent/chat/prompt.ts"],"names":[],"mappings":"AAEA,wBAAsB,iBAAiB,oBAoEtC"}
1
+ {"version":3,"file":"prompt.d.ts","sourceRoot":"","sources":["../../../src/agent/chat/prompt.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAGvC,wBAAsB,iBAAiB,CAAC,QAAQ,EAAE,QAAQ,mBAoEzD"}
@@ -1,9 +1,9 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.buildSystemPrompt = void 0;
3
+ exports.buildSystemPrompt = buildSystemPrompt;
4
4
  const repo_1 = require("./repo");
5
- async function buildSystemPrompt() {
6
- const repoContext = await (0, repo_1.getRepoContext)();
5
+ async function buildSystemPrompt(fileInfo) {
6
+ const repoContext = await (0, repo_1.getRepoInfoPrompt)(fileInfo);
7
7
  return `
8
8
  You are a helpful assistant that can answer questions and help with tasks related to writing
9
9
  and maintaining Playwright tests.
@@ -71,4 +71,3 @@ running Playwright tests. For any read-write actions (e.g. modifying any file),
71
71
  ${repoContext}
72
72
  `;
73
73
  }
74
- exports.buildSystemPrompt = buildSystemPrompt;
@@ -1,2 +1,3 @@
1
- export declare function getRepoContext(): Promise<string>;
1
+ import { FileInfo } from "../../types";
2
+ export declare function getRepoInfoPrompt(directory: FileInfo): Promise<string>;
2
3
  //# sourceMappingURL=repo.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"repo.d.ts","sourceRoot":"","sources":["../../../src/agent/chat/repo.ts"],"names":[],"mappings":"AAqCA,wBAAsB,cAAc,oBAyCnC"}
1
+ {"version":3,"file":"repo.d.ts","sourceRoot":"","sources":["../../../src/agent/chat/repo.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAwCvC,wBAAsB,iBAAiB,CAAC,SAAS,EAAE,QAAQ,mBAyC1D"}
@@ -3,28 +3,28 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.getRepoContext = void 0;
7
- const fs_1 = __importDefault(require("fs"));
6
+ exports.getRepoInfoPrompt = getRepoInfoPrompt;
8
7
  const path_1 = __importDefault(require("path"));
9
8
  const repo_tree_1 = require("../../utils/repo-tree");
10
- const utils_1 = require("../browsing/utils");
11
- async function getAllMarkdownFiles() {
12
- const dir = path_1.default.join(process.cwd(), ".empiricalrun");
13
- if (!fs_1.default.existsSync(dir)) {
9
+ async function getAllMarkdownFiles(directory) {
10
+ if (!directory.isDirectory) {
14
11
  return [];
15
12
  }
16
- const files = fs_1.default.readdirSync(dir);
17
- return files
18
- .filter((file) => file.endsWith(".md"))
19
- .map((file) => {
13
+ const files = directory.children.find((child) => child.isDirectory && child.path === ".empiricalrun")?.children;
14
+ if (!files) {
15
+ return [];
16
+ }
17
+ return Promise.all(files
18
+ .filter((file) => file.isFile && file.path.endsWith(".md"))
19
+ .map(async (file) => {
20
20
  return {
21
- name: file,
22
- content: fs_1.default.readFileSync(path_1.default.join(dir, file), "utf8"),
21
+ name: path_1.default.basename(file.path),
22
+ content: await file.getContent(),
23
23
  };
24
- });
24
+ }));
25
25
  }
26
- async function knowledgeContext() {
27
- const mdFiles = await getAllMarkdownFiles();
26
+ async function knowledgeContext(directory) {
27
+ const mdFiles = await getAllMarkdownFiles(directory);
28
28
  const knowledge = mdFiles.map((file) => {
29
29
  return `
30
30
  <knowledge_file>
@@ -37,35 +37,32 @@ async function knowledgeContext() {
37
37
  });
38
38
  return knowledge.join("\n");
39
39
  }
40
- async function getRepoContext() {
40
+ async function getRepoInfoPrompt(directory) {
41
41
  let REPO_CONTEXT_PROMPT = `
42
42
  You are running as a CLI tool inside the directory of the repo that has Playwright tests.
43
43
 
44
44
  Here is the repo directory structure:
45
45
 
46
- ${(0, repo_tree_1.generateAsciiTree)(process.cwd())}
46
+ ${(0, repo_tree_1.generateAsciiTree)(directory)}
47
47
 
48
48
  While specifying paths to files, use relative paths from the current working directory. For example:
49
49
  - Correct path: "tests/lesson.spec.ts"
50
- - Incorrect path: "/repo/tests/lesson.spec.ts" or "${path_1.default.basename(process.cwd())}/tests/lesson.spec.ts"
50
+ - Incorrect path: "/repo/tests/lesson.spec.ts" or "${directory.name}/tests/lesson.spec.ts"
51
51
  `;
52
- try {
53
- const playwrightConfig = await (0, utils_1.readPlaywrightConfig)(process.cwd());
54
- const validProjectNames = await (0, utils_1.getValidProjectNames)(playwrightConfig);
55
- if (validProjectNames.length > 0) {
56
- REPO_CONTEXT_PROMPT += `
57
- ## Playwright configuration
58
-
59
- This repo is configured with these Playwright projects (in the playwright.config.ts file):
60
- ${validProjectNames.map((name) => `- ${name}`).join("\n")}
61
-
62
- `;
63
- }
64
- }
65
- catch (error) {
66
- console.warn("Failed to read playwright config", error);
67
- }
68
- const knowledge = await knowledgeContext();
52
+ // try {
53
+ // const playwrightConfig = await readPlaywrightConfig(process.cwd());
54
+ // const validProjectNames = await getValidProjectNames(playwrightConfig);
55
+ // if (validProjectNames.length > 0) {
56
+ // REPO_CONTEXT_PROMPT += `
57
+ // ## Playwright configuration
58
+ // This repo is configured with these Playwright projects (in the playwright.config.ts file):
59
+ // ${validProjectNames.map((name) => `- ${name}`).join("\n")}
60
+ // `;
61
+ // }
62
+ // } catch (error) {
63
+ // console.warn("Failed to read playwright config", error);
64
+ // }
65
+ const knowledge = await knowledgeContext(directory);
69
66
  if (knowledge.length > 0) {
70
67
  REPO_CONTEXT_PROMPT += `
71
68
  ## Repo-specific knowledge
@@ -78,4 +75,3 @@ ${knowledge}
78
75
  }
79
76
  return REPO_CONTEXT_PROMPT;
80
77
  }
81
- exports.getRepoContext = getRepoContext;
@@ -1,5 +1,4 @@
1
- import { IChatModel } from "@empiricalrun/llm/chat";
2
- import { SupportedChatModels } from "./types";
1
+ import { IChatModel, SupportedChatModels } from "@empiricalrun/llm/chat";
3
2
  export declare const CURRENT_CHAT_STATE_VERSION = "20250327.1";
4
3
  export declare const CHAT_STATE_PATH: string;
5
4
  export type ChatStateOnDisk<T> = {
@@ -1 +1 @@
1
- {"version":3,"file":"state.d.ts","sourceRoot":"","sources":["../../../src/agent/chat/state.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAKpD,OAAO,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAE9C,eAAO,MAAM,0BAA0B,eAAe,CAAC;AAEvD,eAAO,MAAM,eAAe,QAI3B,CAAC;AAEF,MAAM,MAAM,eAAe,CAAC,CAAC,IAAI;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,mBAAmB,CAAC;IAC3B,QAAQ,EAAE,CAAC,EAAE,CAAC;CACf,CAAC;AAEF,wBAAgB,eAAe,CAC7B,UAAU,EAAE,MAAM,EAClB,aAAa,EAAE,eAAe,CAAC,GAAG,CAAC,GAAG,SAAS,EAC/C,aAAa,EAAE,mBAAmB,4BAMnC;AAED,wBAAgB,0BAA0B,CAAC,CAAC,EAC1C,QAAQ,EAAE,GAAG,EACb,aAAa,EAAE,mBAAmB,GACjC,eAAe,CAAC,CAAC,CAAC,CAOpB;AAED,wBAAgB,kBAAkB,CAAC,CAAC,EAClC,SAAS,EAAE,UAAU,CAAC,CAAC,CAAC,EACxB,aAAa,EAAE,mBAAmB,4BAGnC;AAED,wBAAgB,aAAa,CAAC,CAAC,KAAK,eAAe,CAAC,CAAC,CAAC,GAAG,SAAS,CAajE;AAED,wBAAgB,UAAU,CAAC,CAAC,EAC1B,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC,EAClB,aAAa,EAAE,mBAAmB,QAsBnC"}
1
+ {"version":3,"file":"state.d.ts","sourceRoot":"","sources":["../../../src/agent/chat/state.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,UAAU,EACV,mBAAmB,EACpB,MAAM,wBAAwB,CAAC;AAIhC,eAAO,MAAM,0BAA0B,eAAe,CAAC;AAEvD,eAAO,MAAM,eAAe,QAI3B,CAAC;AAEF,MAAM,MAAM,eAAe,CAAC,CAAC,IAAI;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,mBAAmB,CAAC;IAC3B,QAAQ,EAAE,CAAC,EAAE,CAAC;CACf,CAAC;AAEF,wBAAgB,eAAe,CAC7B,UAAU,EAAE,MAAM,EAClB,aAAa,EAAE,eAAe,CAAC,GAAG,CAAC,GAAG,SAAS,EAC/C,aAAa,EAAE,mBAAmB,4BAMnC;AAED,wBAAgB,0BAA0B,CAAC,CAAC,EAC1C,QAAQ,EAAE,GAAG,EACb,aAAa,EAAE,mBAAmB,GACjC,eAAe,CAAC,CAAC,CAAC,CAOpB;AAED,wBAAgB,kBAAkB,CAAC,CAAC,EAClC,SAAS,EAAE,UAAU,CAAC,CAAC,CAAC,EACxB,aAAa,EAAE,mBAAmB,4BAGnC;AAED,wBAAgB,aAAa,CAAC,CAAC,KAAK,eAAe,CAAC,CAAC,CAAC,GAAG,SAAS,CAajE;AAED,wBAAgB,UAAU,CAAC,CAAC,EAC1B,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC,EAClB,aAAa,EAAE,mBAAmB,QAsBnC"}
@@ -3,19 +3,23 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.saveToDisk = exports.loadChatState = exports.chatStateFromModel = exports.createChatStateForMessages = exports.createChatState = exports.CHAT_STATE_PATH = exports.CURRENT_CHAT_STATE_VERSION = void 0;
6
+ exports.CHAT_STATE_PATH = exports.CURRENT_CHAT_STATE_VERSION = void 0;
7
+ exports.createChatState = createChatState;
8
+ exports.createChatStateForMessages = createChatStateForMessages;
9
+ exports.chatStateFromModel = chatStateFromModel;
10
+ exports.loadChatState = loadChatState;
11
+ exports.saveToDisk = saveToDisk;
12
+ const chat_1 = require("@empiricalrun/llm/chat");
7
13
  const fs_1 = __importDefault(require("fs"));
8
14
  const path_1 = __importDefault(require("path"));
9
- const model_1 = require("./model");
10
15
  exports.CURRENT_CHAT_STATE_VERSION = "20250327.1";
11
16
  exports.CHAT_STATE_PATH = path_1.default.join(process.cwd(), ".empiricalrun", "last-chat.json");
12
17
  function createChatState(userPrompt, existingState, selectedModel) {
13
18
  const messages = existingState?.messages || [];
14
- const chatModel = (0, model_1.createChatModel)(messages, selectedModel);
19
+ const chatModel = (0, chat_1.createChatModel)(messages, selectedModel);
15
20
  chatModel.pushUserMessage(userPrompt);
16
21
  return createChatStateForMessages(chatModel.messages, selectedModel);
17
22
  }
18
- exports.createChatState = createChatState;
19
23
  function createChatStateForMessages(messages, selectedModel) {
20
24
  // TODO: Add better types for messages
21
25
  return {
@@ -24,11 +28,9 @@ function createChatStateForMessages(messages, selectedModel) {
24
28
  messages: messages,
25
29
  };
26
30
  }
27
- exports.createChatStateForMessages = createChatStateForMessages;
28
31
  function chatStateFromModel(chatModel, selectedModel) {
29
32
  return createChatStateForMessages(chatModel.messages, selectedModel);
30
33
  }
31
- exports.chatStateFromModel = chatStateFromModel;
32
34
  function loadChatState() {
33
35
  if (!fs_1.default.existsSync(exports.CHAT_STATE_PATH)) {
34
36
  return undefined;
@@ -40,7 +42,6 @@ function loadChatState() {
40
42
  }
41
43
  return state;
42
44
  }
43
- exports.loadChatState = loadChatState;
44
45
  function saveToDisk(messages, selectedModel) {
45
46
  const statePath = exports.CHAT_STATE_PATH;
46
47
  let existingState = {
@@ -63,4 +64,3 @@ function saveToDisk(messages, selectedModel) {
63
64
  };
64
65
  fs_1.default.writeFileSync(statePath, JSON.stringify(newState, null, 2));
65
66
  }
66
- exports.saveToDisk = saveToDisk;
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.createEmptyTestCaseBlock = void 0;
3
+ exports.createEmptyTestCaseBlock = createEmptyTestCaseBlock;
4
4
  const llm_1 = require("@empiricalrun/llm");
5
5
  const logger_1 = require("../../bin/logger");
6
6
  const context_1 = require("../../bin/utils/context");
@@ -55,4 +55,3 @@ async function createEmptyTestCaseBlock({ testCase, file, trace, }) {
55
55
  });
56
56
  return testBlock;
57
57
  }
58
- exports.createEmptyTestCaseBlock = createEmptyTestCaseBlock;
@@ -3,7 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.validateAndFixTypescriptErrors = void 0;
6
+ exports.validateAndFixTypescriptErrors = validateAndFixTypescriptErrors;
7
7
  const llm_1 = require("@empiricalrun/llm");
8
8
  const fs_1 = __importDefault(require("fs"));
9
9
  const logger_1 = require("../../bin/logger");
@@ -76,4 +76,3 @@ async function validateAndFixTypescriptErrors({ trace, logger = new logger_1.Cus
76
76
  }
77
77
  }
78
78
  }
79
- exports.validateAndFixTypescriptErrors = validateAndFixTypescriptErrors;