@aether-agent/evals 0.4.9 → 0.5.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/README.md CHANGED
@@ -5,6 +5,8 @@
5
5
  - [Install](#install)
6
6
  - [Writing evals with vitest](#writing-evals-with-vitest)
7
7
  - [Grading a run with an LLM judge](#grading-a-run-with-an-llm-judge)
8
+ - [Evaluating against a merged change](#evaluating-against-a-merged-change)
9
+ - [Running the image as built](#running-the-image-as-built)
8
10
 
9
11
  <!-- END doctoc generated TOC please keep comment here to allow auto update -->
10
12
 
@@ -45,9 +47,11 @@ test("agent edits notes.txt", async () => {
45
47
  Image.parse("aether-sandbox:latest")
46
48
  ).start(workspace);
47
49
 
50
+ // The agent sees only this environment; nothing is forwarded from the host.
48
51
  const agent = new DockerAgent({
49
52
  container,
50
- command: ["node", "/app/eval-agent.js"]
53
+ command: ["node", "/app/eval-agent.js"],
54
+ env: { ANTHROPIC_API_KEY: process.env.ANTHROPIC_API_KEY! },
51
55
  });
52
56
 
53
57
  const trace = await Transcript.fromStream(agent.run(task));
@@ -98,6 +102,7 @@ test("agent makes a maintainer-quality edit", async () => {
98
102
  const agent = new DockerAgent({
99
103
  container,
100
104
  command: ["node", "/app/eval-agent.js"],
105
+ env: { ANTHROPIC_API_KEY: process.env.ANTHROPIC_API_KEY! },
101
106
  });
102
107
 
103
108
  const trace = await Transcript.fromStream(agent.run(task));
@@ -138,3 +143,59 @@ test("agent makes a maintainer-quality edit", async () => {
138
143
  expect(summary.passed, summary.reason).toBe(true);
139
144
  });
140
145
  ```
146
+
147
+ ### Evaluating against a merged change
148
+
149
+ `Workspace.fromGitBundle` and `Workspace.fromGitRepo` check out a start commit and grade the agent
150
+ against a gold commit, such as the change a human merged. The workspace holds only the start commit's
151
+ history, on `main` (or `branch`) with no remote, so the agent can't find the gold commit in git.
152
+ `workspace.referenceDiff` is computed before the gold commit is discarded. That history is fetched in
153
+ full, blobs included, so reuse one bundle across runs for large repositories.
154
+
155
+ ```ts
156
+ await using workspace = await Workspace.fromGitBundle({
157
+ bundlePath, // from createGitBundle({ url, startCommit, goldCommit }, bundlePath)
158
+ startCommit,
159
+ goldCommit,
160
+ diffExclude: ["*pnpm-lock.yaml"], // left out of both diffs
161
+ });
162
+
163
+ // ... run the agent ...
164
+
165
+ // Commits, staged and unstaged edits, and untracked files since the start commit. Rejects if git
166
+ // can't read the repository.
167
+ const agentDiff = await workspace.captureAgentDiff();
168
+ const referenceDiff = workspace.referenceDiff;
169
+ ```
170
+
171
+ ### Running the image as built
172
+
173
+ By default a container replaces the image's entrypoint and runs commands as the image's user. For an
174
+ image built to run an agent in production:
175
+
176
+ ```ts
177
+ await using container = await Container.builder(Image.parse("my-agent:latest"))
178
+ .withPrivileged(true)
179
+ // Keep an entrypoint that starts services, such as a Docker daemon, and wait for them.
180
+ .withImageEntrypoint(true)
181
+ .withReadyCommand("docker info")
182
+ // Run execs and agents as the image's developer user. On Linux, the user is granted access to the
183
+ // workspace and ephemeral mounts; mounts added with withMount keep their host permissions.
184
+ .withUser("1000:1000")
185
+ .start(workspace);
186
+
187
+ const controller = new AbortController();
188
+ for await (const event of agent.run(task, { signal: controller.signal })) {
189
+ // ...
190
+ }
191
+ const tests = await container.exec({
192
+ command: ["pnpm", "test"],
193
+ signal: AbortSignal.timeout(600_000),
194
+ });
195
+ ```
196
+
197
+ Aborting an exec rejects it immediately. Docker can't kill an exec'd process, so the command runs
198
+ until it exits or the container stops. Git inside the container treats `/workspace` as a safe
199
+ directory, since bind mounts are usually owned by another user.
200
+
201
+ These container options and abort signals are not yet in the Rust `aether-evals` crate.
package/dist/Agent.d.ts CHANGED
@@ -1,6 +1,9 @@
1
1
  import type { AgentEvent } from "@aether-agent/sdk";
2
2
  import type { Task } from "./task.js";
3
+ export interface AgentRunOptions {
4
+ signal?: AbortSignal;
5
+ }
3
6
  export interface Agent {
4
- run(task: Task): AsyncIterable<AgentEvent>;
7
+ run(task: Task, options?: AgentRunOptions): AsyncIterable<AgentEvent>;
5
8
  }
6
9
  //# sourceMappingURL=Agent.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Agent.d.ts","sourceRoot":"","sources":["../src/Agent.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEtC,MAAM,WAAW,KAAK;IACpB,GAAG,CAAC,IAAI,EAAE,IAAI,GAAG,aAAa,CAAC,UAAU,CAAC,CAAC;CAC5C"}
1
+ {"version":3,"file":"Agent.d.ts","sourceRoot":"","sources":["../src/Agent.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEtC,MAAM,WAAW,eAAe;IAC9B,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB;AAED,MAAM,WAAW,KAAK;IACpB,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,EAAE,eAAe,GAAG,aAAa,CAAC,UAAU,CAAC,CAAC;CACvE"}
@@ -1,8 +1,7 @@
1
1
  import type { AgentEvent } from "@aether-agent/sdk";
2
2
  import { Container } from "./containers/container.js";
3
- import type { Agent } from "./Agent.js";
3
+ import type { Agent, AgentRunOptions } from "./Agent.js";
4
4
  import type { Task } from "./task.js";
5
- export declare const CONTAINER_AETHER_HOME = "/root/.aether";
6
5
  export declare const AETHER_EVAL_TASK_PROMPT_ENV = "AETHER_EVAL_TASK_PROMPT";
7
6
  export declare const AETHER_EVAL_WORKSPACE_ROOT_ENV = "AETHER_EVAL_WORKSPACE_ROOT";
8
7
  export declare const AETHER_EVAL_CWD_ENV = "AETHER_EVAL_CWD";
@@ -18,7 +17,6 @@ export declare class DockerAgent implements Agent {
18
17
  constructor(options: DockerAgentOptions);
19
18
  withEnvVar(key: string, value: string): DockerAgent;
20
19
  withEnvVars(env: Record<string, string>): DockerAgent;
21
- run(task: Task): AsyncIterable<AgentEvent>;
20
+ run(task: Task, options?: AgentRunOptions): AsyncIterable<AgentEvent>;
22
21
  }
23
- export declare function defaultEvalEnvVars(hostEnv?: Record<string, string | undefined>): Record<string, string>;
24
22
  //# sourceMappingURL=DockerAgent.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"DockerAgent.d.ts","sourceRoot":"","sources":["../src/DockerAgent.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAEtD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACxC,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAGtC,eAAO,MAAM,qBAAqB,kBAAkB,CAAC;AACrD,eAAO,MAAM,2BAA2B,4BAA4B,CAAC;AACrE,eAAO,MAAM,8BAA8B,+BAA+B,CAAC;AAC3E,eAAO,MAAM,mBAAmB,oBAAoB,CAAC;AAYrD,MAAM,WAAW,kBAAkB;IACjC,SAAS,EAAE,SAAS,CAAC;IACrB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC9B;AAED,qBAAa,WAAY,YAAW,KAAK;IACvC,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC;IAC9B,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,CAAC;IAC3B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAErC,YAAY,OAAO,EAAE,kBAAkB,EAatC;IAED,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,WAAW,CAMlD;IAED,WAAW,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,WAAW,CAMpD;IAEM,GAAG,CAAC,IAAI,EAAE,IAAI,GAAG,aAAa,CAAC,UAAU,CAAC,CAgChD;CACF;AAED,wBAAgB,kBAAkB,CAChC,OAAO,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAc,GACvD,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAexB"}
1
+ {"version":3,"file":"DockerAgent.d.ts","sourceRoot":"","sources":["../src/DockerAgent.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAEtD,OAAO,KAAK,EAAE,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AACzD,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAGtC,eAAO,MAAM,2BAA2B,4BAA4B,CAAC;AACrE,eAAO,MAAM,8BAA8B,+BAA+B,CAAC;AAC3E,eAAO,MAAM,mBAAmB,oBAAoB,CAAC;AAErD,MAAM,WAAW,kBAAkB;IACjC,SAAS,EAAE,SAAS,CAAC;IACrB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC9B;AAED,qBAAa,WAAY,YAAW,KAAK;IACvC,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC;IAC9B,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,CAAC;IAC3B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAErC,YAAY,OAAO,EAAE,kBAAkB,EAUtC;IAED,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,WAAW,CAMlD;IAED,WAAW,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,WAAW,CAMpD;IAEM,GAAG,CACR,IAAI,EAAE,IAAI,EACV,OAAO,GAAE,eAAoB,GAC5B,aAAa,CAAC,UAAU,CAAC,CAiC3B;CACF"}
@@ -1,20 +1,8 @@
1
- import { env as processEnv } from "node:process";
2
1
  import { AetherEvalError } from "./errors.js";
3
2
  import { isTerminalEvent } from "./transcript.js";
4
- export const CONTAINER_AETHER_HOME = "/root/.aether";
5
3
  export const AETHER_EVAL_TASK_PROMPT_ENV = "AETHER_EVAL_TASK_PROMPT";
6
4
  export const AETHER_EVAL_WORKSPACE_ROOT_ENV = "AETHER_EVAL_WORKSPACE_ROOT";
7
5
  export const AETHER_EVAL_CWD_ENV = "AETHER_EVAL_CWD";
8
- const PROVIDER_ENV_VARS = new Set([
9
- "ANTHROPIC_API_KEY",
10
- "DEEPSEEK_API_KEY",
11
- "GEMINI_API_KEY",
12
- "MOONSHOT_API_KEY",
13
- "OPENAI_API_KEY",
14
- "OPENROUTER_API_KEY",
15
- "XIAOMI_API_KEY",
16
- "ZAI_API_KEY",
17
- ]);
18
6
  export class DockerAgent {
19
7
  container;
20
8
  command;
@@ -25,10 +13,7 @@ export class DockerAgent {
25
13
  }
26
14
  this.container = options.container;
27
15
  this.command = [...options.command];
28
- this.env = {
29
- ...defaultEvalEnvVars(processEnv),
30
- ...(options.env ?? {}),
31
- };
16
+ this.env = { ...options.env };
32
17
  }
33
18
  withEnvVar(key, value) {
34
19
  return new DockerAgent({
@@ -44,7 +29,7 @@ export class DockerAgent {
44
29
  env: { ...this.env, ...env },
45
30
  });
46
31
  }
47
- async *run(task) {
32
+ async *run(task, options = {}) {
48
33
  const env = {
49
34
  ...this.env,
50
35
  [AETHER_EVAL_WORKSPACE_ROOT_ENV]: this.container.workspaceRoot,
@@ -57,6 +42,7 @@ export class DockerAgent {
57
42
  command: this.command,
58
43
  cwd: this.container.cwd,
59
44
  env,
45
+ signal: options.signal,
60
46
  onStderr: (chunk) => {
61
47
  stderr += chunk;
62
48
  },
@@ -75,22 +61,6 @@ export class DockerAgent {
75
61
  }
76
62
  }
77
63
  }
78
- export function defaultEvalEnvVars(hostEnv = processEnv) {
79
- const env = {};
80
- for (const [key, value] of Object.entries(hostEnv)) {
81
- if (value === undefined)
82
- continue;
83
- if (key === "AETHER_HOME")
84
- continue;
85
- if (PROVIDER_ENV_VARS.has(key) ||
86
- key === "OLLAMA_HOST" ||
87
- key.startsWith("AETHER_")) {
88
- env[key] = value;
89
- }
90
- }
91
- env.AETHER_HOME = CONTAINER_AETHER_HOME;
92
- return env;
93
- }
94
64
  function parseAgentEvent(line) {
95
65
  try {
96
66
  return JSON.parse(line);
@@ -1 +1 @@
1
- {"version":3,"file":"DockerAgent.js","sourceRoot":"","sources":["../src/DockerAgent.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"DockerAgent.js","sourceRoot":"","sources":["../src/DockerAgent.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
- import type { AgentEvent } from "@aether-agent/sdk";
2
- import type { Agent } from "./Agent.js";
1
+ import { type AgentEvent } from "@aether-agent/sdk";
2
+ import type { Agent, AgentRunOptions } from "./Agent.js";
3
3
  import type { Task } from "./task.js";
4
4
  import type { Workspace } from "./workspace.js";
5
5
  /**
@@ -16,6 +16,6 @@ export declare class FakeAgent implements Agent {
16
16
  static writesFile(path: string, contents: string): FakeAgent;
17
17
  withFileWrite(path: string, contents: string): FakeAgent;
18
18
  withWorkspace(workspace: Workspace): FakeAgent;
19
- run(_task: Task): AsyncIterable<AgentEvent>;
19
+ run(_task: Task, { signal }?: AgentRunOptions): AsyncIterable<AgentEvent>;
20
20
  }
21
21
  //# sourceMappingURL=FakeAgent.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"FakeAgent.d.ts","sourceRoot":"","sources":["../src/FakeAgent.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAEpD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACxC,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEtC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAEhD;;;GAGG;AACH,qBAAa,SAAU,YAAW,KAAK;IAEnC,QAAQ,CAAC,MAAM,EAAE,UAAU,EAAE;IAC7B,QAAQ,CAAC,UAAU,EAAE,aAAa,CAAC,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7D,QAAQ,CAAC,SAAS,EAAE,SAAS,GAAG,SAAS;IAH3C,YACW,MAAM,EAAE,UAAU,EAAE,EACpB,UAAU,GAAE,aAAa,CAAC,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAAM,EACzD,SAAS,GAAE,SAAS,GAAG,SAAqB,EACnD;IAEJ,MAAM,CAAC,OAAO,IAAI,SAAS,CAa1B;IAED,MAAM,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,SAAS,CA0B/D;IAED,MAAM,CAAC,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,SAAS,CAE3D;IAED,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,SAAS,CAMvD;IAED,aAAa,CAAC,SAAS,EAAE,SAAS,GAAG,SAAS,CAE7C;IAEM,GAAG,CAAC,KAAK,EAAE,IAAI,GAAG,aAAa,CAAC,UAAU,CAAC,CAiBjD;CACF"}
1
+ {"version":3,"file":"FakeAgent.d.ts","sourceRoot":"","sources":["../src/FakeAgent.ts"],"names":[],"mappings":"AAGA,OAAO,EAAkB,KAAK,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAEpE,OAAO,KAAK,EAAE,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AACzD,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEtC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAEhD;;;GAGG;AACH,qBAAa,SAAU,YAAW,KAAK;IAEnC,QAAQ,CAAC,MAAM,EAAE,UAAU,EAAE;IAC7B,QAAQ,CAAC,UAAU,EAAE,aAAa,CAAC,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7D,QAAQ,CAAC,SAAS,EAAE,SAAS,GAAG,SAAS;IAH3C,YACW,MAAM,EAAE,UAAU,EAAE,EACpB,UAAU,GAAE,aAAa,CAAC,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAAM,EACzD,SAAS,GAAE,SAAS,GAAG,SAAqB,EACnD;IAEJ,MAAM,CAAC,OAAO,IAAI,SAAS,CAa1B;IAED,MAAM,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,SAAS,CA0B/D;IAED,MAAM,CAAC,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,SAAS,CAE3D;IAED,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,SAAS,CAMvD;IAED,aAAa,CAAC,SAAS,EAAE,SAAS,GAAG,SAAS,CAE7C;IAEM,GAAG,CACR,KAAK,EAAE,IAAI,EACX,EAAE,MAAM,EAAE,GAAE,eAAoB,GAC/B,aAAa,CAAC,UAAU,CAAC,CAkB3B;CACF"}
package/dist/FakeAgent.js CHANGED
@@ -1,5 +1,6 @@
1
1
  import { mkdir, writeFile } from "node:fs/promises";
2
2
  import { dirname, join } from "node:path";
3
+ import { throwIfAborted } from "@aether-agent/sdk";
3
4
  import { AetherEvalError } from "./errors.js";
4
5
  import { turnEnded } from "./transcript.js";
5
6
  /**
@@ -65,7 +66,7 @@ export class FakeAgent {
65
66
  withWorkspace(workspace) {
66
67
  return new FakeAgent(this.events, this.fileWrites, workspace);
67
68
  }
68
- async *run(_task) {
69
+ async *run(_task, { signal } = {}) {
69
70
  if (this.fileWrites.length > 0 && !this.workspace) {
70
71
  throw new AetherEvalError("configuration_error", "FakeAgent file writes require a bound workspace");
71
72
  }
@@ -75,6 +76,7 @@ export class FakeAgent {
75
76
  await writeFile(target, contents);
76
77
  }
77
78
  for (const event of this.events) {
79
+ throwIfAborted(signal);
78
80
  yield event;
79
81
  }
80
82
  }
@@ -1 +1 @@
1
- {"version":3,"file":"FakeAgent.js","sourceRoot":"","sources":["../src/FakeAgent.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"FakeAgent.js","sourceRoot":"","sources":["../src/FakeAgent.ts"],"names":[],"mappings":"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"}
@@ -10,6 +10,7 @@ export interface ContainerExecOptions {
10
10
  command: string[];
11
11
  cwd?: string;
12
12
  env?: Record<string, string>;
13
+ user?: string;
13
14
  signal?: AbortSignal;
14
15
  }
15
16
  export interface ExecOutput {
@@ -17,19 +18,20 @@ export interface ExecOutput {
17
18
  stdout: string;
18
19
  stderr: string;
19
20
  }
20
- export interface ContainerStreamingOptions {
21
- command: string[];
22
- cwd?: string;
23
- env?: Record<string, string>;
24
- signal?: AbortSignal;
21
+ export interface ContainerStreamingOptions extends ContainerExecOptions {
25
22
  onStderr?: (chunk: string) => void;
26
23
  }
27
24
  export declare class Container {
28
25
  private readonly container;
29
- private readonly ephemeralTempdirs;
30
26
  readonly workspaceRoot = "/workspace";
31
27
  readonly cwd: string;
32
- constructor(container: StartedTestContainer, ephemeralTempdirs: string[], cwd: string);
28
+ private readonly user?;
29
+ private readonly ephemeralTempdirs;
30
+ constructor(container: StartedTestContainer, options: {
31
+ cwd: string;
32
+ user?: string;
33
+ ephemeralTempdirs?: string[];
34
+ });
33
35
  static builder(image: Image): ContainerBuilder;
34
36
  exec(options: ContainerExecOptions): Promise<ExecOutput>;
35
37
  execShell(script: string): Promise<ExecOutput>;
@@ -42,11 +44,17 @@ export declare class ContainerBuilder {
42
44
  private mounts;
43
45
  private ephemeralMounts;
44
46
  private privileged;
47
+ private user?;
48
+ private imageEntrypoint;
49
+ private readyCommand;
45
50
  constructor(image: Image);
46
51
  /**
47
52
  * Enables Docker privileged mode.
48
53
  */
49
54
  withPrivileged(privileged: boolean): this;
55
+ withUser(user: string): this;
56
+ withImageEntrypoint(imageEntrypoint: boolean): this;
57
+ withReadyCommand(command: string): this;
50
58
  withEnvVar(key: string, value: string): this;
51
59
  withEnvVars(envVars: Record<string, string>): this;
52
60
  withMount(mount: BindMount): this;
@@ -1 +1 @@
1
- {"version":3,"file":"container.d.ts","sourceRoot":"","sources":["../../src/containers/container.ts"],"names":[],"mappings":"AAOA,OAAO,EAGL,KAAK,oBAAoB,EAE1B,MAAM,gBAAgB,CAAC;AAExB,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAEnC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAIjD,MAAM,WAAW,SAAS;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,CAAC;CAChC;AAED,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7B,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB;AAED,MAAM,WAAW,UAAU;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,yBAAyB;IACxC,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7B,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CACpC;AAED,qBAAa,SAAS;IAKlB,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,iBAAiB;IALpC,QAAQ,CAAC,aAAa,gBAAgB;IACtC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IAErB,YACmB,SAAS,EAAE,oBAAoB,EAC/B,iBAAiB,EAAE,MAAM,EAAE,EAC5C,GAAG,EAAE,MAAM,EAGZ;IAED,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,GAAG,gBAAgB,CAE7C;IAEK,IAAI,CAAC,OAAO,EAAE,oBAAoB,GAAG,OAAO,CAAC,UAAU,CAAC,CAU7D;IAEK,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CAInD;IAEM,aAAa,CAClB,OAAO,EAAE,yBAAyB,GACjC,aAAa,CAAC,MAAM,CAAC,CAuFvB;IAEK,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,CAG3C;CACF;AAED,qBAAa,gBAAgB;IAMf,OAAO,CAAC,QAAQ,CAAC,KAAK;IALlC,OAAO,CAAC,OAAO,CAA8B;IAC7C,OAAO,CAAC,MAAM,CAAmB;IACjC,OAAO,CAAC,eAAe,CAAgB;IACvC,OAAO,CAAC,UAAU,CAAS;IAE3B,YAA6B,KAAK,EAAE,KAAK,EAAI;IAE7C;;OAEG;IACH,cAAc,CAAC,UAAU,EAAE,OAAO,GAAG,IAAI,CAGxC;IAED,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAG3C;IAED,WAAW,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAGjD;IAED,SAAS,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI,CAGhC;IAED,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAGvC;IAEK,KAAK,CAAC,SAAS,EAAE,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC,CAyCpD;CACF"}
1
+ {"version":3,"file":"container.d.ts","sourceRoot":"","sources":["../../src/containers/container.ts"],"names":[],"mappings":"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"}
@@ -58,27 +58,31 @@ import { createInterface } from "node:readline";
58
58
  import { PassThrough } from "node:stream";
59
59
  import { finished } from "node:stream/promises";
60
60
  import { GenericContainer, getContainerRuntimeClient, Wait, } from "testcontainers";
61
- import { AetherSdkError } from "@aether-agent/sdk";
61
+ import { abortedError, runCommand, throwIfAborted } from "@aether-agent/sdk";
62
62
  import { AetherCommandExitError, AetherEvalError } from "../errors.js";
63
63
  const STARTUP_TIMEOUT_MS = 60_000;
64
+ const WORKSPACE_ROOT = "/workspace";
64
65
  export class Container {
65
66
  container;
66
- ephemeralTempdirs;
67
- workspaceRoot = "/workspace";
67
+ workspaceRoot = WORKSPACE_ROOT;
68
68
  cwd;
69
- constructor(container, ephemeralTempdirs, cwd) {
69
+ user;
70
+ ephemeralTempdirs;
71
+ constructor(container, options) {
70
72
  this.container = container;
71
- this.ephemeralTempdirs = ephemeralTempdirs;
72
- this.cwd = cwd;
73
+ this.cwd = options.cwd;
74
+ this.user = options.user;
75
+ this.ephemeralTempdirs = options.ephemeralTempdirs ?? [];
73
76
  }
74
77
  static builder(image) {
75
78
  return new ContainerBuilder(image);
76
79
  }
77
80
  async exec(options) {
78
- const result = await this.container.exec(options.command, {
81
+ const result = await abortable(this.container.exec(options.command, {
79
82
  workingDir: options.cwd ?? this.cwd,
80
83
  env: options.env,
81
- });
84
+ user: options.user ?? this.user,
85
+ }), options.signal);
82
86
  return {
83
87
  exitCode: result.exitCode,
84
88
  stdout: result.stdout,
@@ -93,9 +97,7 @@ export class Container {
93
97
  async *execStreaming(options) {
94
98
  const env_1 = { stack: [], error: void 0, hasError: false };
95
99
  try {
96
- if (options.signal?.aborted) {
97
- throw new AetherSdkError("aborted", "Aborted by caller");
98
- }
100
+ throwIfAborted(options.signal);
99
101
  const client = await getContainerRuntimeClient();
100
102
  const dockerode = client.container.dockerode;
101
103
  const dockerodeContainer = dockerode.getContainer(this.container.getId());
@@ -106,6 +108,7 @@ export class Container {
106
108
  AttachStderr: true,
107
109
  WorkingDir: options.cwd ?? this.cwd,
108
110
  Env: env.length > 0 ? env : undefined,
111
+ User: options.user ?? this.user,
109
112
  });
110
113
  const stream = await exec.start({ hijack: true, stdin: false });
111
114
  const stdoutPipe = new PassThrough();
@@ -137,7 +140,7 @@ export class Container {
137
140
  dockerodeContainer.modem.demuxStream(stream, stdoutPipe, stderrPipe);
138
141
  const abortCleanup = __addDisposableResource(env_1, options.signal
139
142
  ? addAbortListener(options.signal, () => {
140
- stream.destroy(new AetherSdkError("aborted", "Aborted by caller"));
143
+ stream.destroy(abortedError());
141
144
  })
142
145
  : undefined, false);
143
146
  void abortCleanup;
@@ -187,6 +190,9 @@ export class ContainerBuilder {
187
190
  mounts = [];
188
191
  ephemeralMounts = [];
189
192
  privileged = false;
193
+ user;
194
+ imageEntrypoint = false;
195
+ readyCommand = "true";
190
196
  constructor(image) {
191
197
  this.image = image;
192
198
  }
@@ -197,6 +203,18 @@ export class ContainerBuilder {
197
203
  this.privileged = privileged;
198
204
  return this;
199
205
  }
206
+ withUser(user) {
207
+ this.user = user;
208
+ return this;
209
+ }
210
+ withImageEntrypoint(imageEntrypoint) {
211
+ this.imageEntrypoint = imageEntrypoint;
212
+ return this;
213
+ }
214
+ withReadyCommand(command) {
215
+ this.readyCommand = command;
216
+ return this;
217
+ }
200
218
  withEnvVar(key, value) {
201
219
  this.envVars[key] = value;
202
220
  return this;
@@ -223,31 +241,46 @@ export class ContainerBuilder {
223
241
  ephemeralBindMounts.push({ source, target, mode: "rw" });
224
242
  }
225
243
  const cwd = workspace.relativeCwd
226
- ? posix.join("/workspace", workspace.relativeCwd)
227
- : "/workspace";
228
- const workspaceMount = {
229
- source: workspace.rootPath,
230
- target: "/workspace",
231
- mode: "rw",
232
- };
244
+ ? posix.join(WORKSPACE_ROOT, workspace.relativeCwd)
245
+ : WORKSPACE_ROOT;
233
246
  const container = await createGenericContainer(this.image);
234
247
  if (this.privileged) {
235
248
  container.withPrivilegedMode();
236
249
  }
250
+ if (this.imageEntrypoint) {
251
+ container.withCommand(["sleep", "infinity"]);
252
+ }
253
+ else {
254
+ container
255
+ .withEntrypoint(["/bin/sh"])
256
+ .withCommand(["-c", "sleep infinity"]);
257
+ }
237
258
  const started = await container
238
- .withEntrypoint(["/bin/sh"])
239
- .withCommand(["-c", "sleep infinity"])
240
259
  .withWorkingDir(cwd)
241
- .withEnvironment(this.envVars)
260
+ .withEnvironment(withSafeWorkspace(this.envVars))
242
261
  .withBindMounts([
243
- workspaceMount,
262
+ { source: workspace.rootPath, target: WORKSPACE_ROOT, mode: "rw" },
244
263
  ...this.mounts,
245
264
  ...ephemeralBindMounts,
246
265
  ])
247
- .withWaitStrategy(Wait.forSuccessfulCommand("true"))
266
+ .withWaitStrategy(Wait.forSuccessfulCommand(this.readyCommand))
248
267
  .withStartupTimeout(STARTUP_TIMEOUT_MS)
249
268
  .start();
250
- return new Container(started, ephemeralTempdirs, cwd);
269
+ const result = new Container(started, {
270
+ cwd,
271
+ user: this.user,
272
+ ephemeralTempdirs,
273
+ });
274
+ if (this.user) {
275
+ await grantAccess(result, [
276
+ workspace.rootPath,
277
+ ...ephemeralTempdirs,
278
+ ]).catch(async (err) => {
279
+ await result[Symbol.asyncDispose]();
280
+ throw err;
281
+ });
282
+ }
283
+ return result;
251
284
  }
252
285
  catch (err) {
253
286
  await removeTempdirs(ephemeralTempdirs);
@@ -279,6 +312,45 @@ async function createGenericContainer(image) {
279
312
  deleteOnExit: image.build.deleteOnExit ?? false,
280
313
  });
281
314
  }
315
+ function withSafeWorkspace(env) {
316
+ const index = Number(env.GIT_CONFIG_COUNT ?? 0);
317
+ return {
318
+ ...env,
319
+ GIT_CONFIG_COUNT: String(index + 1),
320
+ [`GIT_CONFIG_KEY_${index}`]: "safe.directory",
321
+ [`GIT_CONFIG_VALUE_${index}`]: WORKSPACE_ROOT,
322
+ };
323
+ }
324
+ async function grantAccess(container, paths) {
325
+ const hostUid = process.getuid?.();
326
+ if (process.platform !== "linux" || hostUid === undefined)
327
+ return;
328
+ const id = await container.exec({ command: ["id", "-u"] });
329
+ if (id.exitCode !== 0) {
330
+ throw new AetherEvalError("configuration_error", `could not resolve the container user's UID:\n${id.stderr}`);
331
+ }
332
+ const uid = Number(id.stdout.trim());
333
+ if (uid === hostUid)
334
+ return;
335
+ const acl = `u:${uid}:rwX,d:u:${uid}:rwx,d:u:${hostUid}:rwx`;
336
+ await runCommand("setfacl", ["-R", "-m", acl, ...paths], {
337
+ cwd: process.cwd(),
338
+ env: process.env,
339
+ spawnFailedMessage: `Failed to run setfacl to grant UID ${uid} access to the workspace (is the acl package installed?)`,
340
+ exitedErrorCode: "execution_failed",
341
+ exitedMessage: ({ exitCode, stderr }) => `setfacl exited with code ${exitCode}.\n${stderr}`,
342
+ });
343
+ }
344
+ function abortable(promise, signal) {
345
+ if (!signal)
346
+ return promise;
347
+ if (signal.aborted)
348
+ return Promise.reject(abortedError());
349
+ return new Promise((resolve, reject) => {
350
+ const listener = addAbortListener(signal, () => reject(abortedError()));
351
+ promise.then(resolve, reject).finally(() => listener[Symbol.dispose]());
352
+ });
353
+ }
282
354
  async function removeTempdirs(tempdirs) {
283
355
  await Promise.all(tempdirs.map((path) => rm(path, { recursive: true, force: true })));
284
356
  }
@@ -1 +1 @@
1
- {"version":3,"file":"container.js","sourceRoot":"","sources":["../../src/containers/container.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjC,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAChD,OAAO,EACL,gBAAgB,EAChB,yBAAyB,EAEzB,IAAI,GACL,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAEnD,OAAO,EAAE,sBAAsB,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAGvE,MAAM,kBAAkB,GAAG,MAAM,CAAC;AA6BlC,MAAM,OAAO,SAAS;IAKD,SAAS;IACT,iBAAiB;IAL3B,aAAa,GAAG,YAAY,CAAC;IAC7B,GAAG,CAAS;IAErB,YACmB,SAA+B,EAC/B,iBAA2B,EAC5C,GAAW;yBAFM,SAAS;iCACT,iBAAiB;QAGlC,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;IACjB,CAAC;IAED,MAAM,CAAC,OAAO,CAAC,KAAY;QACzB,OAAO,IAAI,gBAAgB,CAAC,KAAK,CAAC,CAAC;IACrC,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,OAA6B;QACtC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE;YACxD,UAAU,EAAE,OAAO,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG;YACnC,GAAG,EAAE,OAAO,CAAC,GAAG;SACjB,CAAC,CAAC;QACH,OAAO;YACL,QAAQ,EAAE,MAAM,CAAC,QAAQ;YACzB,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,MAAM,EAAE,MAAM,CAAC,MAAM;SACtB,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,MAAc;QAC5B,OAAO,IAAI,CAAC,IAAI,CAAC;YACf,OAAO,EAAE,CAAC,SAAS,EAAE,KAAK,EAAE,MAAM,CAAC;SACpC,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,CAAC,aAAa,CAClB,OAAkC;;;YAElC,IAAI,OAAO,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC;gBAC5B,MAAM,IAAI,cAAc,CAAC,SAAS,EAAE,mBAAmB,CAAC,CAAC;YAC3D,CAAC;YACD,MAAM,MAAM,GAAG,MAAM,yBAAyB,EAAE,CAAC;YACjD,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC;YAC7C,MAAM,kBAAkB,GAAG,SAAS,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC,CAAC;YAC1E,MAAM,GAAG,GAAG,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,GAAG,CAC/C,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,IAAI,KAAK,EAAE,CACpC,CAAC;YACF,MAAM,IAAI,GAAG,MAAM,kBAAkB,CAAC,IAAI,CAAC;gBACzC,GAAG,EAAE,OAAO,CAAC,OAAO;gBACpB,YAAY,EAAE,IAAI;gBAClB,YAAY,EAAE,IAAI;gBAClB,UAAU,EAAE,OAAO,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG;gBACnC,GAAG,EAAE,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS;aACtC,CAAC,CAAC;YAEH,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;YAChE,MAAM,UAAU,GAAG,IAAI,WAAW,EAAE,CAAC;YACrC,MAAM,UAAU,GAAG,IAAI,WAAW,EAAE,CAAC;YACrC,MAAM,QAAQ,GAAG,QAAQ,CAAC,MAAM,EAAE;gBAChC,QAAQ,EAAE,IAAI;gBACd,QAAQ,EAAE,KAAK;gBACf,OAAO,EAAE,IAAI;aACd,CAAC,CAAC,IAAI,CACL,GAAG,EAAE;gBACH,UAAU,CAAC,GAAG,EAAE,CAAC;gBACjB,UAAU,CAAC,GAAG,EAAE,CAAC;YACnB,CAAC,EACD,CAAC,KAAY,EAAE,EAAE;gBACf,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;gBAC1B,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;gBAC1B,MAAM,KAAK,CAAC;YACd,CAAC,CACF,CAAC;YACF,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC;gBAC1B,QAAQ;gBACR,QAAQ,CAAC,UAAU,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;gBACvC,QAAQ,CAAC,UAAU,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;aACxC,CAAC,CAAC;YACH,KAAK,OAAO,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;YAC7B,IAAI,MAAM,GAAG,EAAE,CAAC;YAChB,UAAU,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;YAC/B,UAAU,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAa,EAAE,EAAE;gBACtC,MAAM,IAAI,KAAK,CAAC;gBAChB,OAAO,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,CAAC;YAC5B,CAAC,CAAC,CAAC;YAEH,kBAAkB,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;YAErE,MAAM,YAAY,kCAAG,OAAO,CAAC,MAAM;gBACjC,CAAC,CAAC,gBAAgB,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,EAAE;oBACpC,MAAM,CAAC,OAAO,CAAC,IAAI,cAAc,CAAC,SAAS,EAAE,mBAAmB,CAAC,CAAC,CAAC;gBACrE,CAAC,CAAC;gBACJ,CAAC,CAAC,SAAS,QAAA,CAAC;YACd,KAAK,YAAY,CAAC;YAElB,IAAI,CAAC;gBACH,MAAM,KAAK,GAAG,eAAe,CAAC,EAAE,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,CAAC;gBAC1E,IAAI,CAAC;oBACH,IAAI,KAAK,EAAE,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;wBAC/B,MAAM,IAAI,CAAC;oBACb,CAAC;gBACH,CAAC;wBAAS,CAAC;oBACT,KAAK,CAAC,KAAK,EAAE,CAAC;gBAChB,CAAC;gBACD,MAAM,OAAO,CAAC;gBACd,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;gBACpC,IACE,MAAM,CAAC,OAAO;oBACd,MAAM,CAAC,QAAQ,KAAK,IAAI;oBACxB,MAAM,CAAC,QAAQ,KAAK,SAAS,EAC7B,CAAC;oBACD,MAAM,IAAI,eAAe,CACvB,sBAAsB,EACtB,2DAA2D,MAAM,EAAE,CACpE,CAAC;gBACJ,CAAC;gBACD,IAAI,MAAM,CAAC,QAAQ,KAAK,CAAC,EAAE,CAAC;oBAC1B,MAAM,IAAI,sBAAsB,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;gBAC5D,CAAC;YACH,CAAC;oBAAS,CAAC;gBACT,MAAM,CAAC,OAAO,EAAE,CAAC;gBACjB,UAAU,CAAC,OAAO,EAAE,CAAC;gBACrB,UAAU,CAAC,OAAO,EAAE,CAAC;YACvB,CAAC;;;;;;;;;IACH,CAAC;IAED,KAAK,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC;QACzB,MAAM,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;QAC5C,MAAM,cAAc,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;IAC/C,CAAC;CACF;AAED,MAAM,OAAO,gBAAgB;IAME,KAAK;IAL1B,OAAO,GAA2B,EAAE,CAAC;IACrC,MAAM,GAAgB,EAAE,CAAC;IACzB,eAAe,GAAa,EAAE,CAAC;IAC/B,UAAU,GAAG,KAAK,CAAC;IAE3B,YAA6B,KAAY;qBAAZ,KAAK;IAAU,CAAC;IAE7C;;OAEG;IACH,cAAc,CAAC,UAAmB;QAChC,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,UAAU,CAAC,GAAW,EAAE,KAAa;QACnC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;QAC1B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,WAAW,CAAC,OAA+B;QACzC,IAAI,CAAC,OAAO,GAAG,EAAE,GAAG,IAAI,CAAC,OAAO,EAAE,GAAG,OAAO,EAAE,CAAC;QAC/C,OAAO,IAAI,CAAC;IACd,CAAC;IAED,SAAS,CAAC,KAAgB;QACxB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACxB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,kBAAkB,CAAC,MAAc;QAC/B,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAClC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,SAAoB;QAC9B,MAAM,iBAAiB,GAAa,EAAE,CAAC;QACvC,IAAI,CAAC;YACH,MAAM,mBAAmB,GAAgB,EAAE,CAAC;YAC5C,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;gBAC1C,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,oBAAoB,CAAC,CAAC,CAAC;gBACnE,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBAC/B,mBAAmB,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;YAC3D,CAAC;YAED,MAAM,GAAG,GAAG,SAAS,CAAC,WAAW;gBAC/B,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,YAAY,EAAE,SAAS,CAAC,WAAW,CAAC;gBACjD,CAAC,CAAC,YAAY,CAAC;YACjB,MAAM,cAAc,GAAc;gBAChC,MAAM,EAAE,SAAS,CAAC,QAAQ;gBAC1B,MAAM,EAAE,YAAY;gBACpB,IAAI,EAAE,IAAI;aACX,CAAC;YACF,MAAM,SAAS,GAAG,MAAM,sBAAsB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC3D,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;gBACpB,SAAS,CAAC,kBAAkB,EAAE,CAAC;YACjC,CAAC;YACD,MAAM,OAAO,GAAG,MAAM,SAAS;iBAC5B,cAAc,CAAC,CAAC,SAAS,CAAC,CAAC;iBAC3B,WAAW,CAAC,CAAC,IAAI,EAAE,gBAAgB,CAAC,CAAC;iBACrC,cAAc,CAAC,GAAG,CAAC;iBACnB,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC;iBAC7B,cAAc,CAAC;gBACd,cAAc;gBACd,GAAG,IAAI,CAAC,MAAM;gBACd,GAAG,mBAAmB;aACvB,CAAC;iBACD,gBAAgB,CAAC,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC;iBACnD,kBAAkB,CAAC,kBAAkB,CAAC;iBACtC,KAAK,EAAE,CAAC;YAEX,OAAO,IAAI,SAAS,CAAC,OAAO,EAAE,iBAAiB,EAAE,GAAG,CAAC,CAAC;QACxD,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,cAAc,CAAC,iBAAiB,CAAC,CAAC;YACxC,MAAM,GAAG,CAAC;QACZ,CAAC;IACH,CAAC;CACF;AAED,KAAK,UAAU,sBAAsB,CAAC,KAAY;IAChD,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;QACjB,OAAO,IAAI,gBAAgB,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC;IAChD,CAAC;IAED,IAAI,OAAO,GAAG,gBAAgB,CAAC,cAAc,CAC3C,KAAK,CAAC,KAAK,CAAC,OAAO,EACnB,KAAK,CAAC,KAAK,CAAC,UAAU,CACvB,CAAC;IAEF,IAAI,KAAK,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC;QAC1B,OAAO,GAAG,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;IACzD,CAAC;IAED,IAAI,KAAK,CAAC,KAAK,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;QACpC,OAAO,GAAG,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACjD,CAAC;IAED,IAAI,KAAK,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;QACzB,OAAO,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;IACnC,CAAC;IAED,IAAI,KAAK,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;QACzB,OAAO,GAAG,OAAO,CAAC,YAAY,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IACvD,CAAC;IAED,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;QACvB,OAAO,GAAG,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IACnD,CAAC;IAED,OAAO,MAAM,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,EAAE,EAAE;QAC3C,YAAY,EAAE,KAAK,CAAC,KAAK,CAAC,YAAY,IAAI,KAAK;KAChD,CAAC,CAAC;AACL,CAAC;AAED,KAAK,UAAU,cAAc,CAAC,QAAkB;IAC9C,MAAM,OAAO,CAAC,GAAG,CACf,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,CAAC,IAAI,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CACnE,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"container.js","sourceRoot":"","sources":["../../src/containers/container.ts"],"names":[],"mappings":"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"}
package/dist/git.d.ts CHANGED
@@ -4,16 +4,7 @@ export declare class GitRepo {
4
4
  static fromPath(path: string): GitRepo;
5
5
  /** Initialize an empty repository at `dest`. */
6
6
  static init(dest: string, signal?: AbortSignal): Promise<GitRepo>;
7
- /**
8
- * Clone `source` (a URL or a local bundle/path) into `dest` with `--no-checkout`.
9
- *
10
- * When `blobless` (the default), uses a partial blobless clone (`--filter=blob:none`)
11
- * that defers blob downloads -- cheaper for large repos. Pass false to download the full
12
- * object set so the clone is self-contained (e.g. when `source` is a bundle, which is not
13
- * a promisor remote).
14
- */
15
- static clone(source: string, dest: string, signal?: AbortSignal, blobless?: boolean): Promise<GitRepo>;
16
- checkout(reference: string, signal?: AbortSignal): Promise<void>;
7
+ checkoutBranch(branch: string, commit: string, signal?: AbortSignal): Promise<void>;
17
8
  /** Fetch `revs` from `remote` (a named remote or a URL) into this repository. */
18
9
  fetch(remote: string, revs: string[], signal?: AbortSignal): Promise<void>;
19
10
  updateRef(name: string, commit: string, signal?: AbortSignal): Promise<void>;
@@ -22,6 +13,7 @@ export declare class GitRepo {
22
13
  * reachable objects.
23
14
  */
24
15
  bundle(revs: string[], out: string, signal?: AbortSignal): Promise<void>;
25
- diff(fromCommit: string, toCommit?: string, signal?: AbortSignal): Promise<string>;
16
+ diff(fromCommit: string, toCommit: string, exclude: string[], signal?: AbortSignal): Promise<string>;
17
+ diffWorkingTree(fromCommit: string, exclude: string[], signal?: AbortSignal): Promise<string>;
26
18
  }
27
19
  //# sourceMappingURL=git.d.ts.map
package/dist/git.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"git.d.ts","sourceRoot":"","sources":["../src/git.ts"],"names":[],"mappings":"AAIA,qBAAa,OAAO;IACE,QAAQ,CAAC,IAAI,EAAE,MAAM;IAAzC,OAAO,eAAsC;IAE7C,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAErC;IAED,gDAAgD;IAChD,OAAa,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,CAGtE;IAED;;;;;;;OAOG;IACH,OAAa,KAAK,CAChB,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,EACZ,MAAM,CAAC,EAAE,WAAW,EACpB,QAAQ,UAAO,GACd,OAAO,CAAC,OAAO,CAAC,CAIlB;IAEK,QAAQ,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAErE;IAED,iFAAiF;IAC3E,KAAK,CACT,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,EAAE,EACd,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,IAAI,CAAC,CAEf;IAEK,SAAS,CACb,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,EACd,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,IAAI,CAAC,CAEf;IAED;;;OAGG;IACG,MAAM,CACV,IAAI,EAAE,MAAM,EAAE,EACd,GAAG,EAAE,MAAM,EACX,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,IAAI,CAAC,CAEf;IAEK,IAAI,CACR,UAAU,EAAE,MAAM,EAClB,QAAQ,CAAC,EAAE,MAAM,EACjB,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,MAAM,CAAC,CAGjB;CACF"}
1
+ {"version":3,"file":"git.d.ts","sourceRoot":"","sources":["../src/git.ts"],"names":[],"mappings":"AAOA,qBAAa,OAAO;IACE,QAAQ,CAAC,IAAI,EAAE,MAAM;IAAzC,OAAO,eAAsC;IAE7C,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAErC;IAED,gDAAgD;IAChD,OAAa,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,CAGtE;IAEK,cAAc,CAClB,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,IAAI,CAAC,CAEf;IAED,iFAAiF;IAC3E,KAAK,CACT,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,EAAE,EACd,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,IAAI,CAAC,CAEf;IAEK,SAAS,CACb,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,EACd,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,IAAI,CAAC,CAEf;IAED;;;OAGG;IACG,MAAM,CACV,IAAI,EAAE,MAAM,EAAE,EACd,GAAG,EAAE,MAAM,EACX,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,IAAI,CAAC,CAEf;IAEK,IAAI,CACR,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,EAAE,EACjB,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,MAAM,CAAC,CAKjB;IAEK,eAAe,CACnB,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,MAAM,EAAE,EACjB,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,MAAM,CAAC,CAiCjB;CACF"}
package/dist/git.js CHANGED
@@ -1,3 +1,6 @@
1
+ import { copyFile, mkdtemp, rm } from "node:fs/promises";
2
+ import { tmpdir } from "node:os";
3
+ import { join } from "node:path";
1
4
  import { env as processEnv } from "node:process";
2
5
  import { runCommand } from "@aether-agent/sdk";
3
6
  export class GitRepo {
@@ -13,25 +16,12 @@ export class GitRepo {
13
16
  await git(["init", dest], signal);
14
17
  return new GitRepo(dest);
15
18
  }
16
- /**
17
- * Clone `source` (a URL or a local bundle/path) into `dest` with `--no-checkout`.
18
- *
19
- * When `blobless` (the default), uses a partial blobless clone (`--filter=blob:none`)
20
- * that defers blob downloads -- cheaper for large repos. Pass false to download the full
21
- * object set so the clone is self-contained (e.g. when `source` is a bundle, which is not
22
- * a promisor remote).
23
- */
24
- static async clone(source, dest, signal, blobless = true) {
25
- const filter = blobless ? ["--filter=blob:none"] : [];
26
- await git(["clone", "--no-checkout", ...filter, source, dest], signal);
27
- return new GitRepo(dest);
28
- }
29
- async checkout(reference, signal) {
30
- await git(["-C", this.path, "checkout", reference], signal);
19
+ async checkoutBranch(branch, commit, signal) {
20
+ await git(["-C", this.path, "checkout", "-B", branch, commit], signal);
31
21
  }
32
22
  /** Fetch `revs` from `remote` (a named remote or a URL) into this repository. */
33
23
  async fetch(remote, revs, signal) {
34
- await git(["-C", this.path, "fetch", remote, ...revs], signal);
24
+ await git(["-C", this.path, "fetch", "--no-tags", remote, ...revs], signal);
35
25
  }
36
26
  async updateRef(name, commit, signal) {
37
27
  await git(["-C", this.path, "update-ref", name, commit], signal);
@@ -43,15 +33,47 @@ export class GitRepo {
43
33
  async bundle(revs, out, signal) {
44
34
  await git(["-C", this.path, "bundle", "create", out, ...revs], signal);
45
35
  }
46
- async diff(fromCommit, toCommit, signal) {
47
- const range = toCommit ? `${fromCommit}..${toCommit}` : fromCommit;
48
- return git(["-C", this.path, "diff", range], signal);
36
+ async diff(fromCommit, toCommit, exclude, signal) {
37
+ return git(["-C", this.path, "diff", fromCommit, toCommit, ...pathspecs(exclude)], signal);
38
+ }
39
+ async diffWorkingTree(fromCommit, exclude, signal) {
40
+ const scratch = await mkdtemp(join(tmpdir(), "aether-eval-index-"));
41
+ try {
42
+ const index = join(scratch, "index");
43
+ const realIndex = await git([
44
+ "-C",
45
+ this.path,
46
+ "rev-parse",
47
+ "--path-format=absolute",
48
+ "--git-path",
49
+ "index",
50
+ ], signal);
51
+ await copyFile(realIndex.trim(), index).catch(() => { });
52
+ const env = { GIT_INDEX_FILE: index };
53
+ await git(["-C", this.path, "add", "--all"], signal, env);
54
+ return await git([
55
+ "-C",
56
+ this.path,
57
+ "diff",
58
+ "--cached",
59
+ fromCommit,
60
+ ...pathspecs(exclude),
61
+ ], signal, env);
62
+ }
63
+ finally {
64
+ await rm(scratch, { recursive: true, force: true });
65
+ }
49
66
  }
50
67
  }
51
- function git(args, signal) {
68
+ function pathspecs(exclude) {
69
+ return exclude.length > 0
70
+ ? ["--", ...exclude.map((pathspec) => `:(exclude)${pathspec}`)]
71
+ : [];
72
+ }
73
+ function git(args, signal, env = {}) {
52
74
  return runCommand("git", args, {
53
75
  cwd: process.cwd(),
54
- env: processEnv,
76
+ env: { ...processEnv, ...env },
55
77
  abortSignal: signal,
56
78
  spawnFailedMessage: "Failed to run git for the eval workspace (is git installed and on PATH?)",
57
79
  exitedErrorCode: "execution_failed",
package/dist/git.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"git.js","sourceRoot":"","sources":["../src/git.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"git.js","sourceRoot":"","sources":["../src/git.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -4,7 +4,7 @@ export { AetherEvalError, AetherCommandExitError } from "./errors.js";
4
4
  export type { AetherEvalErrorCode } from "./errors.js";
5
5
  export { Container, ContainerBuilder, Image } from "./containers/index.js";
6
6
  export type { BindMount, ContainerExecOptions, ContainerStreamingOptions, ExecOutput, ImageBuildOptions, } from "./containers/index.js";
7
- export type { Agent } from "./Agent.js";
7
+ export type { Agent, AgentRunOptions } from "./Agent.js";
8
8
  export { FakeAgent } from "./FakeAgent.js";
9
9
  export { Task } from "./task.js";
10
10
  export { diffStatsFromDiff } from "./diff.js";
@@ -15,6 +15,6 @@ export { judge, JudgeCriterionResponseSchema, JudgeResponseSchema, } from "./jud
15
15
  export type { Judge, JudgeContext, JudgeCriterionResponse, JudgeCriterionSpec, JudgeCriterionSummary, JudgeInput, JudgeRubricResponse, JudgeSummary, } from "./judge.js";
16
16
  export { isTerminalEvent, Transcript, TranscriptError, ToolCall, turnEnded, } from "./transcript.js";
17
17
  export { createGitBundle, Workspace } from "./workspace.js";
18
- export type { GitBundleSpec, GitRepoSpec, RetainedWorkspaceInfo, WorkspaceSource, } from "./workspace.js";
18
+ export type { GitBundleSpec, GitCheckoutSpec, GitRepoSpec, RetainedWorkspaceInfo, } from "./workspace.js";
19
19
  export type { AgentEvent, ContextEvent, ContextUsage, FileDiff, LlmCallOutcome, LlmCallPurpose, MessageEvent, ModelEvent, PlanMeta, PlanMetaEntry, PlanMetaStatus, SessionUsageEvent, SessionUsageTotals, StopReason, TokenUsage, ToolCallError, ToolCallRequest, ToolCallResult, ToolDisplayMeta, ToolEvent, ToolResultMeta, TurnEvent, TurnOutcome, UsageCost, UsageSource, } from "@aether-agent/sdk";
20
20
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,YAAY,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAC3D,OAAO,EAAE,eAAe,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AACtE,YAAY,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AACvD,OAAO,EAAE,SAAS,EAAE,gBAAgB,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAC3E,YAAY,EACV,SAAS,EACT,oBAAoB,EACpB,yBAAyB,EACzB,UAAU,EACV,iBAAiB,GAClB,MAAM,uBAAuB,CAAC;AAC/B,YAAY,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACxC,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAC9C,YAAY,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpD,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,YAAY,EACV,mBAAmB,EACnB,eAAe,EACf,cAAc,EACd,eAAe,GAChB,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,KAAK,EACL,4BAA4B,EAC5B,mBAAmB,GACpB,MAAM,YAAY,CAAC;AACpB,YAAY,EACV,KAAK,EACL,YAAY,EACZ,sBAAsB,EACtB,kBAAkB,EAClB,qBAAqB,EACrB,UAAU,EACV,mBAAmB,EACnB,YAAY,GACb,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,eAAe,EACf,UAAU,EACV,eAAe,EACf,QAAQ,EACR,SAAS,GACV,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC5D,YAAY,EACV,aAAa,EACb,WAAW,EACX,qBAAqB,EACrB,eAAe,GAChB,MAAM,gBAAgB,CAAC;AACxB,YAAY,EACV,UAAU,EACV,YAAY,EACZ,YAAY,EACZ,QAAQ,EACR,cAAc,EACd,cAAc,EACd,YAAY,EACZ,UAAU,EACV,QAAQ,EACR,aAAa,EACb,cAAc,EACd,iBAAiB,EACjB,kBAAkB,EAClB,UAAU,EACV,UAAU,EACV,aAAa,EACb,eAAe,EACf,cAAc,EACd,eAAe,EACf,SAAS,EACT,cAAc,EACd,SAAS,EACT,WAAW,EACX,SAAS,EACT,WAAW,GACZ,MAAM,mBAAmB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,YAAY,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAC3D,OAAO,EAAE,eAAe,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AACtE,YAAY,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AACvD,OAAO,EAAE,SAAS,EAAE,gBAAgB,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAC3E,YAAY,EACV,SAAS,EACT,oBAAoB,EACpB,yBAAyB,EACzB,UAAU,EACV,iBAAiB,GAClB,MAAM,uBAAuB,CAAC;AAC/B,YAAY,EAAE,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AACzD,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAC9C,YAAY,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpD,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,YAAY,EACV,mBAAmB,EACnB,eAAe,EACf,cAAc,EACd,eAAe,GAChB,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,KAAK,EACL,4BAA4B,EAC5B,mBAAmB,GACpB,MAAM,YAAY,CAAC;AACpB,YAAY,EACV,KAAK,EACL,YAAY,EACZ,sBAAsB,EACtB,kBAAkB,EAClB,qBAAqB,EACrB,UAAU,EACV,mBAAmB,EACnB,YAAY,GACb,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,eAAe,EACf,UAAU,EACV,eAAe,EACf,QAAQ,EACR,SAAS,GACV,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC5D,YAAY,EACV,aAAa,EACb,eAAe,EACf,WAAW,EACX,qBAAqB,GACtB,MAAM,gBAAgB,CAAC;AACxB,YAAY,EACV,UAAU,EACV,YAAY,EACZ,YAAY,EACZ,QAAQ,EACR,cAAc,EACd,cAAc,EACd,YAAY,EACZ,UAAU,EACV,QAAQ,EACR,aAAa,EACb,cAAc,EACd,iBAAiB,EACjB,kBAAkB,EAClB,UAAU,EACV,UAAU,EACV,aAAa,EACb,eAAe,EACf,cAAc,EACd,eAAe,EACf,SAAS,EACT,cAAc,EACd,SAAS,EACT,WAAW,EACX,SAAS,EACT,WAAW,GACZ,MAAM,mBAAmB,CAAC"}
@@ -1,4 +1,4 @@
1
- import type { AgentEvent, ContextUsage, TurnOutcome } from "@aether-agent/sdk";
1
+ import type { AgentEvent, ContextUsage, SessionUsageTotals, TurnOutcome } from "@aether-agent/sdk";
2
2
  export declare class ToolCall {
3
3
  readonly name: string;
4
4
  readonly arguments: string;
@@ -19,6 +19,7 @@ export declare class Transcript {
19
19
  toolCalled(name: string): boolean;
20
20
  toolCallCount(name: string): number;
21
21
  usage(): ContextUsage;
22
+ sessionUsage(): SessionUsageTotals;
22
23
  }
23
24
  export declare function isTerminalEvent(event: AgentEvent): boolean;
24
25
  /** Build the terminal turn event, defaulting to a completed turn. */
@@ -1 +1 @@
1
- {"version":3,"file":"transcript.d.ts","sourceRoot":"","sources":["../src/transcript.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAE/E,qBAAa,QAAQ;IAIjB,QAAQ,CAAC,IAAI,EAAE,MAAM;IAHvB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAE3B,YACW,IAAI,EAAE,MAAM,EACrB,cAAc,EAAE,MAAM,EAGvB;IAED,aAAa,IAAI,OAAO,CAEvB;CACF;AAED,qBAAa,eAAgB,SAAQ,KAAK;IACxC,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAC;IAEhC,YAAY,UAAU,EAAE,UAAU,EAAE,KAAK,EAAE,OAAO,EAIjD;CACF;AAED,qBAAa,UAAU;IACrB,QAAQ,CAAC,MAAM,EAAE,UAAU,EAAE,CAAC;IAE9B,YAAY,MAAM,GAAE,UAAU,EAAO,EAEpC;IAED,OAAa,UAAU,CACrB,MAAM,EAAE,aAAa,CAAC,UAAU,CAAC,GAChC,OAAO,CAAC,UAAU,CAAC,CAUrB;IAED,GAAG,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI,CAE3B;IAED,YAAY,IAAI,QAAQ,EAAE,CAEzB;IAED,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,QAAQ,EAAE,CAElC;IAED,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEhC;IAED,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAElC;IAED,KAAK,IAAI,YAAY,CAEpB;CACF;AAQD,wBAAgB,eAAe,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO,CAE1D;AAED,qEAAqE;AACrE,wBAAgB,SAAS,CACvB,OAAO,GAAE,WAAqC,GAC7C,UAAU,CAEZ"}
1
+ {"version":3,"file":"transcript.d.ts","sourceRoot":"","sources":["../src/transcript.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,UAAU,EACV,YAAY,EACZ,kBAAkB,EAClB,WAAW,EACZ,MAAM,mBAAmB,CAAC;AAE3B,qBAAa,QAAQ;IAIjB,QAAQ,CAAC,IAAI,EAAE,MAAM;IAHvB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAE3B,YACW,IAAI,EAAE,MAAM,EACrB,cAAc,EAAE,MAAM,EAGvB;IAED,aAAa,IAAI,OAAO,CAEvB;CACF;AAED,qBAAa,eAAgB,SAAQ,KAAK;IACxC,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAC;IAEhC,YAAY,UAAU,EAAE,UAAU,EAAE,KAAK,EAAE,OAAO,EAIjD;CACF;AAED,qBAAa,UAAU;IACrB,QAAQ,CAAC,MAAM,EAAE,UAAU,EAAE,CAAC;IAE9B,YAAY,MAAM,GAAE,UAAU,EAAO,EAEpC;IAED,OAAa,UAAU,CACrB,MAAM,EAAE,aAAa,CAAC,UAAU,CAAC,GAChC,OAAO,CAAC,UAAU,CAAC,CAUrB;IAED,GAAG,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI,CAE3B;IAED,YAAY,IAAI,QAAQ,EAAE,CAEzB;IAED,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,QAAQ,EAAE,CAElC;IAED,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEhC;IAED,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAElC;IAED,KAAK,IAAI,YAAY,CAEpB;IAED,YAAY,IAAI,kBAAkB,CAEjC;CACF;AA6BD,wBAAgB,eAAe,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO,CAE1D;AAED,qEAAqE;AACrE,wBAAgB,SAAS,CACvB,OAAO,GAAE,WAAqC,GAC7C,UAAU,CAEZ"}
@@ -52,12 +52,35 @@ export class Transcript {
52
52
  usage() {
53
53
  return summarizeUsage(this.events);
54
54
  }
55
+ sessionUsage() {
56
+ return lastSessionUsage(this.events);
57
+ }
55
58
  }
56
59
  const ZERO_USAGE = {
57
60
  usage_ratio: null,
58
61
  context_limit: null,
59
62
  input_tokens: 0,
60
63
  };
64
+ const ZERO_SESSION_USAGE = {
65
+ tokens: {
66
+ input_tokens: 0,
67
+ output_tokens: 0,
68
+ cache_read_tokens: null,
69
+ cache_creation_tokens: null,
70
+ input_audio_tokens: null,
71
+ input_video_tokens: null,
72
+ reasoning_tokens: null,
73
+ output_audio_tokens: null,
74
+ accepted_prediction_tokens: null,
75
+ rejected_prediction_tokens: null,
76
+ },
77
+ estimated_usd: 0,
78
+ estimated_input_usd: 0,
79
+ estimated_output_usd: 0,
80
+ estimated_cache_read_usd: 0,
81
+ estimated_cache_creation_usd: 0,
82
+ unpriced_calls: 0,
83
+ };
61
84
  export function isTerminalEvent(event) {
62
85
  return event.category === "turn" && event.event.type === "ended";
63
86
  }
@@ -88,4 +111,12 @@ function summarizeUsage(events) {
88
111
  }
89
112
  return { ...ZERO_USAGE };
90
113
  }
114
+ function lastSessionUsage(events) {
115
+ for (let i = events.length - 1; i >= 0; i--) {
116
+ const event = events[i];
117
+ if (event?.category === "session_usage")
118
+ return event.event.totals;
119
+ }
120
+ return structuredClone(ZERO_SESSION_USAGE);
121
+ }
91
122
  //# sourceMappingURL=transcript.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"transcript.js","sourceRoot":"","sources":["../src/transcript.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"transcript.js","sourceRoot":"","sources":["../src/transcript.ts"],"names":[],"mappings":"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"}
@@ -1,33 +1,21 @@
1
1
  import { type GitDiff } from "./diff.js";
2
- export interface GitRepoSpec {
3
- url: string;
2
+ export interface GitCheckoutSpec {
4
3
  startCommit: string;
5
4
  goldCommit: string;
6
5
  subdir?: string;
6
+ branch?: string;
7
+ diffExclude?: string[];
8
+ }
9
+ export interface GitRepoSpec extends GitCheckoutSpec {
10
+ url: string;
7
11
  }
8
- export interface GitBundleSpec {
12
+ export interface GitBundleSpec extends GitCheckoutSpec {
9
13
  bundlePath: string;
10
- startCommit: string;
11
- goldCommit: string;
12
- subdir?: string;
13
14
  }
14
15
  export interface RetainedWorkspaceInfo {
15
16
  rootPath: string;
16
17
  path: string;
17
18
  }
18
- /** Where an eval workspace came from. Git workspaces carry the commits for diffing. */
19
- export type WorkspaceSource = "local" | {
20
- git: {
21
- url: string;
22
- startCommit: string;
23
- goldCommit: string;
24
- };
25
- } | {
26
- bundle: {
27
- startCommit: string;
28
- goldCommit: string;
29
- };
30
- };
31
19
  /** A workspace created on the host for an eval run. */
32
20
  export declare class Workspace implements AsyncDisposable {
33
21
  #private;
@@ -37,7 +25,6 @@ export declare class Workspace implements AsyncDisposable {
37
25
  readonly path: string;
38
26
  /** Subdirectory (relative to `rootPath`) used as the working dir, if any. */
39
27
  readonly relativeCwd?: string;
40
- readonly source: WorkspaceSource;
41
28
  private constructor();
42
29
  static empty(): Promise<Workspace>;
43
30
  static fromFiles(files: Record<string, string>): Promise<Workspace>;
@@ -50,13 +37,11 @@ export declare class Workspace implements AsyncDisposable {
50
37
  * reference diffing work without the originating remote.
51
38
  */
52
39
  static fromGitBundle(spec: GitBundleSpec, signal?: AbortSignal): Promise<Workspace>;
53
- private static fromClone;
40
+ private static fromGit;
54
41
  join(relativePath: string): string;
55
42
  persist(): RetainedWorkspaceInfo;
56
- captureGitDiffs(): Promise<{
57
- agentDiff?: GitDiff;
58
- referenceDiff?: GitDiff;
59
- }>;
43
+ get referenceDiff(): GitDiff | undefined;
44
+ captureAgentDiff(signal?: AbortSignal): Promise<GitDiff | undefined>;
60
45
  /** Remove the workspace directory. Idempotent. */
61
46
  cleanup(): Promise<void>;
62
47
  [Symbol.asyncDispose](): Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"workspace.d.ts","sourceRoot":"","sources":["../src/workspace.ts"],"names":[],"mappings":"AAKA,OAAO,EAAqB,KAAK,OAAO,EAAE,MAAM,WAAW,CAAC;AAM5D,MAAM,WAAW,WAAW;IAC1B,GAAG,EAAE,MAAM,CAAC;IACZ,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,aAAa;IAC5B,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,qBAAqB;IACpC,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,uFAAuF;AACvF,MAAM,MAAM,eAAe,GACvB,OAAO,GACP;IAAE,GAAG,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,CAAA;CAAE,GACjE;IAAE,MAAM,EAAE;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,CAAA;CAAE,CAAC;AAE5D,uDAAuD;AACvD,qBAAa,SAAU,YAAW,eAAe;;IAC/C,mGAAmG;IACnG,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAE1B,mFAAmF;IACnF,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAEtB,6EAA6E;IAC7E,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAE9B,QAAQ,CAAC,MAAM,EAAE,eAAe,CAAC;IAIjC,OAAO,eAUN;IAED,OAAa,KAAK,IAAI,OAAO,CAAC,SAAS,CAAC,CAGvC;IAED,OAAa,SAAS,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,SAAS,CAAC,CAaxE;IAED,OAAa,OAAO,CAClB,MAAM,EAAE,MAAM,EACd,OAAO,SAAgB,GACtB,OAAO,CAAC,SAAS,CAAC,CAWpB;IAED,OAAa,WAAW,CACtB,IAAI,EAAE,WAAW,EACjB,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,SAAS,CAAC,CASpB;IAED;;;;;OAKG;IACH,OAAa,aAAa,CACxB,IAAI,EAAE,aAAa,EACnB,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,SAAS,CAAC,CAepB;mBAEoB,SAAS;IAwB9B,IAAI,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,CAEjC;IAED,OAAO,IAAI,qBAAqB,CAG/B;IAEK,eAAe,IAAI,OAAO,CAAC;QAC/B,SAAS,CAAC,EAAE,OAAO,CAAC;QACpB,aAAa,CAAC,EAAE,OAAO,CAAC;KACzB,CAAC,CAWD;IAED,kDAAkD;IAC5C,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAI7B;IAED,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,CAErC;CACF;AAED;;;;;;GAMG;AACH,wBAAsB,eAAe,CACnC,IAAI,EAAE,WAAW,EACjB,OAAO,EAAE,MAAM,EACf,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,IAAI,CAAC,CAmBf"}
1
+ {"version":3,"file":"workspace.d.ts","sourceRoot":"","sources":["../src/workspace.ts"],"names":[],"mappings":"AAKA,OAAO,EAAqB,KAAK,OAAO,EAAE,MAAM,WAAW,CAAC;AAO5D,MAAM,WAAW,eAAe;IAC9B,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;CACxB;AAED,MAAM,WAAW,WAAY,SAAQ,eAAe;IAClD,GAAG,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,aAAc,SAAQ,eAAe;IACpD,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,qBAAqB;IACpC,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,uDAAuD;AACvD,qBAAa,SAAU,YAAW,eAAe;;IAC/C,mGAAmG;IACnG,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAE1B,mFAAmF;IACnF,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAEtB,6EAA6E;IAC7E,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAK9B,OAAO,eAUN;IAED,OAAa,KAAK,IAAI,OAAO,CAAC,SAAS,CAAC,CAGvC;IAED,OAAa,SAAS,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,SAAS,CAAC,CAaxE;IAED,OAAa,OAAO,CAClB,MAAM,EAAE,MAAM,EACd,OAAO,SAAgB,GACtB,OAAO,CAAC,SAAS,CAAC,CAWpB;IAED,OAAa,WAAW,CACtB,IAAI,EAAE,WAAW,EACjB,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,SAAS,CAAC,CAEpB;IAED;;;;;OAKG;IACH,OAAa,aAAa,CACxB,IAAI,EAAE,aAAa,EACnB,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,SAAS,CAAC,CAQpB;mBAEoB,OAAO;IAqC5B,IAAI,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,CAEjC;IAED,OAAO,IAAI,qBAAqB,CAG/B;IAED,IAAI,aAAa,IAAI,OAAO,GAAG,SAAS,CAEvC;IAEK,gBAAgB,CAAC,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,OAAO,GAAG,SAAS,CAAC,CASzE;IAED,kDAAkD;IAC5C,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAI7B;IAED,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,CAErC;CACF;AAED;;;;;;GAMG;AACH,wBAAsB,eAAe,CACnC,IAAI,EAAE,WAAW,EACjB,OAAO,EAAE,MAAM,EACf,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,IAAI,CAAC,CAgBf"}
package/dist/workspace.js CHANGED
@@ -6,6 +6,7 @@ import { diffStatsFromDiff } from "./diff.js";
6
6
  import { GitRepo } from "./git.js";
7
7
  const EVAL_START_REF = "eval-start";
8
8
  const EVAL_GOLD_REF = "eval-gold";
9
+ const DEFAULT_BRANCH = "main";
9
10
  /** A workspace created on the host for an eval run. */
10
11
  export class Workspace {
11
12
  /** Retained repository/temp root. Cleanup removes this directory; bind-mounted to `/workspace`. */
@@ -14,17 +15,17 @@ export class Workspace {
14
15
  path;
15
16
  /** Subdirectory (relative to `rootPath`) used as the working dir, if any. */
16
17
  relativeCwd;
17
- source;
18
+ #git;
18
19
  #cleaned = false;
19
20
  constructor(options) {
20
21
  this.rootPath = options.rootPath;
21
22
  this.path = options.path;
22
23
  this.relativeCwd = options.relativeCwd;
23
- this.source = options.source;
24
+ this.#git = options.git;
24
25
  }
25
26
  static async empty() {
26
27
  const rootPath = await createWorkspaceDir();
27
- return new Workspace({ rootPath, path: rootPath, source: "local" });
28
+ return new Workspace({ rootPath, path: rootPath });
28
29
  }
29
30
  static async fromFiles(files) {
30
31
  const workspace = await Workspace.empty();
@@ -55,8 +56,7 @@ export class Workspace {
55
56
  }
56
57
  }
57
58
  static async fromGitRepo(spec, signal) {
58
- const { url, startCommit, goldCommit, subdir } = spec;
59
- return Workspace.fromClone((rootPath) => GitRepo.clone(url, rootPath, signal), startCommit, subdir, { git: { url, startCommit, goldCommit } }, signal);
59
+ return Workspace.fromGit(spec.url, spec, signal);
60
60
  }
61
61
  /**
62
62
  * Instantiate a workspace from a local git bundle file (see {@link createGitBundle}).
@@ -65,29 +65,34 @@ export class Workspace {
65
65
  * reference diffing work without the originating remote.
66
66
  */
67
67
  static async fromGitBundle(spec, signal) {
68
- const { bundlePath, startCommit, goldCommit, subdir } = spec;
69
- if (!(await pathExists(bundlePath))) {
70
- throw new AetherSdkError("invalid_options", `git bundle file does not exist: ${bundlePath}`);
71
- }
72
- return Workspace.fromClone((rootPath) => GitRepo.clone(bundlePath, rootPath, signal, false), startCommit, subdir, { bundle: { startCommit, goldCommit } }, signal);
73
- }
74
- static async fromClone(clone, startCommit, subdir, source, signal) {
75
- const rootPath = await createWorkspaceDir();
76
- try {
77
- const repo = await clone(rootPath);
78
- await repo.checkout(startCommit, signal);
79
- const path = await resolveSubdir(rootPath, subdir);
80
- return new Workspace({
81
- rootPath,
82
- path,
83
- relativeCwd: subdir ?? undefined,
84
- source,
85
- });
86
- }
87
- catch (err) {
88
- await rm(rootPath, { recursive: true, force: true });
89
- throw err;
68
+ if (!(await pathExists(spec.bundlePath))) {
69
+ throw new AetherSdkError("invalid_options", `git bundle file does not exist: ${spec.bundlePath}`);
90
70
  }
71
+ return Workspace.fromGit(spec.bundlePath, spec, signal);
72
+ }
73
+ static async fromGit(remote, spec, signal) {
74
+ const { startCommit, goldCommit, subdir, branch = DEFAULT_BRANCH, diffExclude = [], } = spec;
75
+ return withTempDir(async (scratchPath) => {
76
+ const scratch = await GitRepo.init(scratchPath, signal);
77
+ await scratch.fetch(remote, [startCommit, goldCommit], signal);
78
+ const referenceDiff = toGitDiff(await scratch.diff(startCommit, goldCommit, diffExclude, signal));
79
+ const rootPath = await createWorkspaceDir();
80
+ try {
81
+ const repo = await GitRepo.init(rootPath, signal);
82
+ await repo.fetch(scratchPath, [startCommit], signal);
83
+ await repo.checkoutBranch(branch, startCommit, signal);
84
+ return new Workspace({
85
+ rootPath,
86
+ path: await resolveSubdir(rootPath, subdir),
87
+ relativeCwd: subdir,
88
+ git: { startCommit, referenceDiff, diffExclude },
89
+ });
90
+ }
91
+ catch (err) {
92
+ await rm(rootPath, { recursive: true, force: true });
93
+ throw err;
94
+ }
95
+ });
91
96
  }
92
97
  join(relativePath) {
93
98
  return join(this.path, relativePath);
@@ -96,17 +101,15 @@ export class Workspace {
96
101
  this.#cleaned = true;
97
102
  return { rootPath: this.rootPath, path: this.path };
98
103
  }
99
- async captureGitDiffs() {
100
- const commits = diffCommits(this.source);
101
- if (!commits)
102
- return {};
103
- const repo = GitRepo.fromPath(this.path);
104
- const { startCommit, goldCommit } = commits;
105
- const [agentDiff, referenceDiff] = await Promise.all([
106
- captureDiff(() => repo.diff(startCommit)),
107
- captureDiff(() => repo.diff(startCommit, goldCommit)),
108
- ]);
109
- return { agentDiff, referenceDiff };
104
+ get referenceDiff() {
105
+ return this.#git?.referenceDiff;
106
+ }
107
+ async captureAgentDiff(signal) {
108
+ if (!this.#git)
109
+ return undefined;
110
+ const { startCommit, diffExclude } = this.#git;
111
+ const diff = await GitRepo.fromPath(this.rootPath).diffWorkingTree(startCommit, diffExclude, signal);
112
+ return toGitDiff(diff);
110
113
  }
111
114
  /** Remove the workspace directory. Idempotent. */
112
115
  async cleanup() {
@@ -127,30 +130,29 @@ export class Workspace {
127
130
  * then writes a bundle that {@link Workspace.fromGitBundle} can later instantiate offline.
128
131
  */
129
132
  export async function createGitBundle(spec, outPath, signal) {
130
- const tempDir = await createWorkspaceDir();
131
- try {
133
+ await withTempDir(async (tempDir) => {
132
134
  const repo = await GitRepo.init(tempDir, signal);
133
135
  await repo.fetch(spec.url, [spec.startCommit, spec.goldCommit], signal);
134
136
  await repo.updateRef(`refs/heads/${EVAL_START_REF}`, spec.startCommit, signal);
135
137
  await repo.updateRef(`refs/heads/${EVAL_GOLD_REF}`, spec.goldCommit, signal);
136
138
  await repo.bundle([EVAL_START_REF, EVAL_GOLD_REF], outPath, signal);
137
- }
138
- finally {
139
- await rm(tempDir, { recursive: true, force: true });
140
- }
139
+ });
141
140
  }
142
- async function captureDiff(getDiff) {
143
- try {
144
- const diff = await getDiff();
145
- return { diff, stats: diffStatsFromDiff(diff) };
146
- }
147
- catch {
148
- return undefined;
149
- }
141
+ function toGitDiff(diff) {
142
+ return { diff, stats: diffStatsFromDiff(diff) };
150
143
  }
151
144
  async function createWorkspaceDir() {
152
145
  return mkdtemp(join(tmpdir(), "aether-eval-workspace-"));
153
146
  }
147
+ async function withTempDir(fn) {
148
+ const path = await createWorkspaceDir();
149
+ try {
150
+ return await fn(path);
151
+ }
152
+ finally {
153
+ await rm(path, { recursive: true, force: true });
154
+ }
155
+ }
154
156
  function resolvePath(root, relativePath) {
155
157
  const target = resolve(root, relativePath);
156
158
  const rel = relative(root, target);
@@ -177,9 +179,4 @@ async function resolveSubdir(rootPath, subdir) {
177
179
  }
178
180
  return path;
179
181
  }
180
- function diffCommits(source) {
181
- if (source === "local")
182
- return undefined;
183
- return "git" in source ? source.git : source.bundle;
184
- }
185
182
  //# sourceMappingURL=workspace.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"workspace.js","sourceRoot":"","sources":["../src/workspace.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"workspace.js","sourceRoot":"","sources":["../src/workspace.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aether-agent/evals",
3
- "version": "0.4.9",
3
+ "version": "0.5.0",
4
4
  "description": "Evaluation harness for the Aether agent SDK",
5
5
  "repository": {
6
6
  "type": "git",
@@ -21,7 +21,7 @@
21
21
  "dependencies": {
22
22
  "testcontainers": "^12.1.0",
23
23
  "zod": "^4.4.3",
24
- "@aether-agent/sdk": "^0.7.9"
24
+ "@aether-agent/sdk": "^0.7.10"
25
25
  },
26
26
  "devDependencies": {
27
27
  "@types/dockerode": "^4.0.1",