agents-harness 0.2.1 → 0.3.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 +45 -12
- package/dist/cli.js +9 -1
- package/dist/cli.js.map +1 -1
- package/dist/commands/resume.d.ts +4 -0
- package/dist/commands/resume.js +13 -1
- package/dist/commands/resume.js.map +1 -1
- package/dist/commands/run.d.ts +4 -0
- package/dist/commands/run.js +13 -1
- package/dist/commands/run.js.map +1 -1
- package/dist/core/context-manager.d.ts +7 -1
- package/dist/core/context-manager.js +8 -2
- package/dist/core/context-manager.js.map +1 -1
- package/dist/core/file-protocol.js +2 -1
- package/dist/core/file-protocol.js.map +1 -1
- package/dist/core/orchestrator.d.ts +3 -0
- package/dist/core/orchestrator.js +9 -1
- package/dist/core/orchestrator.js.map +1 -1
- package/dist/core/types.d.ts +1 -0
- package/dist/dashboard/server.d.ts +4 -0
- package/dist/dashboard/server.js +33 -2
- package/dist/dashboard/server.js.map +1 -1
- package/dist/dashboard/static/static/index.html +10 -2
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -75,13 +75,19 @@ Give it a feature description and it handles the rest.
|
|
|
75
75
|
| `-s, --scope <workspaces...>` | Limit to specific workspaces (monorepo) | All |
|
|
76
76
|
| `--max-attempts <n>` | Max retry attempts per sprint | 3 |
|
|
77
77
|
| `--max-budget <n>` | Max total spend in USD | 50 |
|
|
78
|
-
| `--dashboard` |
|
|
78
|
+
| `--no-dashboard` | Disable the live web dashboard | On |
|
|
79
79
|
| `--port <n>` | Dashboard port | 3117 |
|
|
80
|
+
| `--model <model>` | Claude model for all agents | — |
|
|
81
|
+
| `--planner-model <model>` | Claude model for the planner agent | opus |
|
|
82
|
+
| `--generator-model <model>` | Claude model for the generator agent | opus |
|
|
83
|
+
| `--evaluator-model <model>` | Claude model for the evaluator agent | sonnet |
|
|
84
|
+
|
|
85
|
+
**Available models:** `opus`, `sonnet`, `haiku` (or full model IDs like `claude-opus-4-6`)
|
|
80
86
|
|
|
81
87
|
**Examples:**
|
|
82
88
|
|
|
83
89
|
```bash
|
|
84
|
-
# Simple feature
|
|
90
|
+
# Simple feature (dashboard opens at http://localhost:3117)
|
|
85
91
|
agents-harness run "Add a /health endpoint that returns 200 OK"
|
|
86
92
|
|
|
87
93
|
# With budget limit
|
|
@@ -90,8 +96,14 @@ agents-harness run "Refactor the auth module to use OAuth2" --max-budget 20
|
|
|
90
96
|
# Monorepo — only touch the backend
|
|
91
97
|
agents-harness run "Add pagination to the users API" --scope packages/api
|
|
92
98
|
|
|
93
|
-
#
|
|
94
|
-
agents-harness run "Build a notification system" --dashboard
|
|
99
|
+
# Disable the dashboard for CI or headless environments
|
|
100
|
+
agents-harness run "Build a notification system" --no-dashboard
|
|
101
|
+
|
|
102
|
+
# Use Sonnet for all agents (cheaper)
|
|
103
|
+
agents-harness run "Add a /health endpoint" --model sonnet
|
|
104
|
+
|
|
105
|
+
# Mix models — Opus for generation, Sonnet for planning/evaluation
|
|
106
|
+
agents-harness run "Build auth system" --planner-model sonnet --generator-model opus
|
|
95
107
|
```
|
|
96
108
|
|
|
97
109
|
### `init` — Initialize project config (optional)
|
|
@@ -158,8 +170,12 @@ Picks up where a stopped or failed run left off. Skips completed sprints.
|
|
|
158
170
|
| Flag | Description | Default |
|
|
159
171
|
|------|-------------|---------|
|
|
160
172
|
| `--max-budget <n>` | Max total spend in USD | 50 |
|
|
161
|
-
| `--dashboard` |
|
|
173
|
+
| `--no-dashboard` | Disable the live web dashboard | On |
|
|
162
174
|
| `--port <n>` | Dashboard port | 3117 |
|
|
175
|
+
| `--model <model>` | Claude model for all agents | — |
|
|
176
|
+
| `--planner-model <model>` | Claude model for the planner agent | opus |
|
|
177
|
+
| `--generator-model <model>` | Claude model for the generator agent | opus |
|
|
178
|
+
| `--evaluator-model <model>` | Claude model for the evaluator agent | sonnet |
|
|
163
179
|
|
|
164
180
|
**Example:**
|
|
165
181
|
|
|
@@ -169,6 +185,12 @@ agents-harness resume
|
|
|
169
185
|
|
|
170
186
|
# Resume with a higher budget
|
|
171
187
|
agents-harness resume --max-budget 100
|
|
188
|
+
|
|
189
|
+
# Resume without dashboard
|
|
190
|
+
agents-harness resume --no-dashboard
|
|
191
|
+
|
|
192
|
+
# Resume with different models
|
|
193
|
+
agents-harness resume --model sonnet
|
|
172
194
|
```
|
|
173
195
|
|
|
174
196
|
### `config` — Manage global settings
|
|
@@ -237,17 +259,28 @@ These are checked **in addition to** the built-in defaults (correctness, testing
|
|
|
237
259
|
|
|
238
260
|
## Live Dashboard
|
|
239
261
|
|
|
240
|
-
|
|
262
|
+
The dashboard starts automatically at `http://localhost:3117` on every run. It provides a split-panel UI for monitoring the entire harness lifecycle.
|
|
241
263
|
|
|
242
264
|
```bash
|
|
243
|
-
|
|
265
|
+
# Dashboard is on by default
|
|
266
|
+
agents-harness run "Build a feature"
|
|
244
267
|
# Dashboard: http://localhost:3117
|
|
268
|
+
|
|
269
|
+
# Disable for CI or headless environments
|
|
270
|
+
agents-harness run "Build a feature" --no-dashboard
|
|
245
271
|
```
|
|
246
272
|
|
|
247
|
-
|
|
248
|
-
-
|
|
249
|
-
-
|
|
250
|
-
|
|
273
|
+
**Left panel:**
|
|
274
|
+
- Phase pipeline (Plan → Decompose → Contract → Generate → Evaluate → Handoff) with active/done states
|
|
275
|
+
- Sprint cards with status, attempt count, cost, and evaluation criteria
|
|
276
|
+
|
|
277
|
+
**Right panel:**
|
|
278
|
+
- File viewer with tabs (Spec, Sprints, Contract, Evaluation, Handoff)
|
|
279
|
+
- Live file updates via WebSocket as agents write to `.harness/` files
|
|
280
|
+
- Auto-switches to the relevant tab when the phase changes
|
|
281
|
+
|
|
282
|
+
**Bottom:**
|
|
283
|
+
- Collapsible activity stream (every file read, edit, bash command)
|
|
251
284
|
- Cost tracking with budget progress bar
|
|
252
285
|
- Auto-reconnects if the connection drops
|
|
253
286
|
|
|
@@ -296,7 +329,7 @@ await harness.run("Add a REST API for managing todos");
|
|
|
296
329
|
|
|
297
330
|
| Agent | Model | Role | Tools |
|
|
298
331
|
|-------|-------|------|-------|
|
|
299
|
-
| **Planner** |
|
|
332
|
+
| **Planner** | Opus | Writes specs, decomposes into sprints, writes contracts | Read, Write |
|
|
300
333
|
| **Generator** | Opus | Implements code based on the contract | Read, Edit, Write, Bash, Glob, Grep |
|
|
301
334
|
| **Evaluator** | Sonnet | Critically tests implementation against contract | Read, Bash, Grep, Glob |
|
|
302
335
|
|
package/dist/cli.js
CHANGED
|
@@ -9,7 +9,7 @@ const program = new Command();
|
|
|
9
9
|
program
|
|
10
10
|
.name("agents-harness")
|
|
11
11
|
.description("Multi-agent orchestrator for autonomous software development")
|
|
12
|
-
.version("0.
|
|
12
|
+
.version("0.3.0");
|
|
13
13
|
program
|
|
14
14
|
.command("run")
|
|
15
15
|
.description("Start a new harness run with a specification")
|
|
@@ -19,6 +19,10 @@ program
|
|
|
19
19
|
.option("--max-budget <n>", "Max total budget in USD", parseFloat)
|
|
20
20
|
.option("--no-dashboard", "Disable live dashboard")
|
|
21
21
|
.option("--port <n>", "Dashboard port", parseInt)
|
|
22
|
+
.option("--model <model>", "Claude model for all agents (opus, sonnet, haiku)")
|
|
23
|
+
.option("--planner-model <model>", "Claude model for the planner agent")
|
|
24
|
+
.option("--generator-model <model>", "Claude model for the generator agent")
|
|
25
|
+
.option("--evaluator-model <model>", "Claude model for the evaluator agent")
|
|
22
26
|
.action((spec, options) => {
|
|
23
27
|
runCommand(spec, options);
|
|
24
28
|
});
|
|
@@ -40,6 +44,10 @@ program
|
|
|
40
44
|
.option("--max-budget <n>", "Max total budget in USD", parseFloat)
|
|
41
45
|
.option("--no-dashboard", "Disable live dashboard")
|
|
42
46
|
.option("--port <n>", "Dashboard port", parseInt)
|
|
47
|
+
.option("--model <model>", "Claude model for all agents (opus, sonnet, haiku)")
|
|
48
|
+
.option("--planner-model <model>", "Claude model for the planner agent")
|
|
49
|
+
.option("--generator-model <model>", "Claude model for the generator agent")
|
|
50
|
+
.option("--evaluator-model <model>", "Claude model for the evaluator agent")
|
|
43
51
|
.action((options) => {
|
|
44
52
|
resumeCommand(options);
|
|
45
53
|
});
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAErD,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,gBAAgB,CAAC;KACtB,WAAW,CAAC,8DAA8D,CAAC;KAC3E,OAAO,CAAC,OAAO,CAAC,CAAC;AAEpB,OAAO;KACJ,OAAO,CAAC,KAAK,CAAC;KACd,WAAW,CAAC,8CAA8C,CAAC;KAC3D,QAAQ,CAAC,QAAQ,EAAE,wCAAwC,CAAC;KAC5D,MAAM,CAAC,6BAA6B,EAAE,8BAA8B,CAAC;KACrE,MAAM,CAAC,oBAAoB,EAAE,yBAAyB,EAAE,QAAQ,CAAC;KACjE,MAAM,CAAC,kBAAkB,EAAE,yBAAyB,EAAE,UAAU,CAAC;KACjE,MAAM,CAAC,gBAAgB,EAAE,wBAAwB,CAAC;KAClD,MAAM,CAAC,YAAY,EAAE,gBAAgB,EAAE,QAAQ,CAAC;KAChD,MAAM,CAAC,CAAC,IAAY,EAAE,OAAO,EAAE,EAAE;IAChC,UAAU,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;AAC5B,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,qDAAqD,CAAC;KAClE,MAAM,CAAC,GAAG,EAAE;IACX,WAAW,EAAE,CAAC;AAChB,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,QAAQ,CAAC;KACjB,WAAW,CAAC,gCAAgC,CAAC;KAC7C,MAAM,CAAC,GAAG,EAAE;IACX,aAAa,EAAE,CAAC;AAClB,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,QAAQ,CAAC;KACjB,WAAW,CAAC,gCAAgC,CAAC;KAC7C,MAAM,CAAC,kBAAkB,EAAE,yBAAyB,EAAE,UAAU,CAAC;KACjE,MAAM,CAAC,gBAAgB,EAAE,wBAAwB,CAAC;KAClD,MAAM,CAAC,YAAY,EAAE,gBAAgB,EAAE,QAAQ,CAAC;KAChD,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE;IAClB,aAAa,CAAC,OAAO,CAAC,CAAC;AACzB,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,QAAQ,CAAC;KACjB,WAAW,CAAC,iCAAiC,CAAC;KAC9C,QAAQ,CAAC,UAAU,EAAE,oBAAoB,CAAC;KAC1C,QAAQ,CAAC,OAAO,EAAE,2BAA2B,CAAC;KAC9C,QAAQ,CAAC,SAAS,EAAE,+BAA+B,CAAC;KACpD,MAAM,CAAC,CAAC,MAAc,EAAE,GAAY,EAAE,KAAc,EAAE,EAAE;IACvD,aAAa,CAAC,MAAM,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;AACpC,CAAC,CAAC,CAAC;AAEL,OAAO,CAAC,KAAK,EAAE,CAAC"}
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,5 +2,9 @@ export interface ResumeOptions {
|
|
|
2
2
|
maxBudget?: number;
|
|
3
3
|
dashboard?: boolean;
|
|
4
4
|
port?: number;
|
|
5
|
+
model?: string;
|
|
6
|
+
plannerModel?: string;
|
|
7
|
+
generatorModel?: string;
|
|
8
|
+
evaluatorModel?: string;
|
|
5
9
|
}
|
|
6
10
|
export declare function resumeCommand(options: ResumeOptions): Promise<void>;
|
package/dist/commands/resume.js
CHANGED
|
@@ -22,12 +22,24 @@ export async function resumeCommand(options) {
|
|
|
22
22
|
}
|
|
23
23
|
const root = process.cwd();
|
|
24
24
|
console.log("Resuming agents-harness run...");
|
|
25
|
-
|
|
25
|
+
const models = {
|
|
26
|
+
planner: options.plannerModel ?? options.model,
|
|
27
|
+
generator: options.generatorModel ?? options.model,
|
|
28
|
+
evaluator: options.evaluatorModel ?? options.model,
|
|
29
|
+
};
|
|
26
30
|
const harness = new Harness({
|
|
27
31
|
apiKey,
|
|
28
32
|
root,
|
|
29
33
|
maxTotalBudgetUsd: options.maxBudget,
|
|
34
|
+
models,
|
|
30
35
|
});
|
|
36
|
+
const resolvedModels = harness.getModels();
|
|
37
|
+
console.log("");
|
|
38
|
+
console.log("Models:");
|
|
39
|
+
console.log(` Planner: ${resolvedModels.planner}`);
|
|
40
|
+
console.log(` Generator: ${resolvedModels.generator}`);
|
|
41
|
+
console.log(` Evaluator: ${resolvedModels.evaluator}`);
|
|
42
|
+
console.log("");
|
|
31
43
|
// Same event listeners as run command
|
|
32
44
|
harness.on("phase:start", (data) => {
|
|
33
45
|
const sprint = data.sprint > 0 ? ` [Sprint ${data.sprint}]` : "";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resume.js","sourceRoot":"","sources":["../../src/commands/resume.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAU5C,SAAS,cAAc,CAAC,EAAU;IAChC,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,IAAI,CAAC,CAAC;IACtC,IAAI,OAAO,GAAG,EAAE;QAAE,OAAO,GAAG,OAAO,GAAG,CAAC;IACvC,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,EAAE,CAAC,CAAC;IACzC,MAAM,gBAAgB,GAAG,OAAO,GAAG,EAAE,CAAC;IACtC,IAAI,OAAO,GAAG,EAAE;QAAE,OAAO,GAAG,OAAO,KAAK,gBAAgB,GAAG,CAAC;IAC5D,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,EAAE,CAAC,CAAC;IACvC,MAAM,gBAAgB,GAAG,OAAO,GAAG,EAAE,CAAC;IACtC,OAAO,GAAG,KAAK,KAAK,gBAAgB,GAAG,CAAC;AAC1C,CAAC;
|
|
1
|
+
{"version":3,"file":"resume.js","sourceRoot":"","sources":["../../src/commands/resume.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/run.d.ts
CHANGED
|
@@ -4,5 +4,9 @@ export interface RunOptions {
|
|
|
4
4
|
maxBudget?: number;
|
|
5
5
|
dashboard?: boolean;
|
|
6
6
|
port?: number;
|
|
7
|
+
model?: string;
|
|
8
|
+
plannerModel?: string;
|
|
9
|
+
generatorModel?: string;
|
|
10
|
+
evaluatorModel?: string;
|
|
7
11
|
}
|
|
8
12
|
export declare function runCommand(spec: string, options: RunOptions): Promise<void>;
|
package/dist/commands/run.js
CHANGED
|
@@ -23,14 +23,26 @@ export async function runCommand(spec, options) {
|
|
|
23
23
|
const root = process.cwd();
|
|
24
24
|
console.log("Starting agents-harness run...");
|
|
25
25
|
console.log(`Spec: ${spec.slice(0, 100)}${spec.length > 100 ? "..." : ""}`);
|
|
26
|
-
|
|
26
|
+
const models = {
|
|
27
|
+
planner: options.plannerModel ?? options.model,
|
|
28
|
+
generator: options.generatorModel ?? options.model,
|
|
29
|
+
evaluator: options.evaluatorModel ?? options.model,
|
|
30
|
+
};
|
|
27
31
|
const harness = new Harness({
|
|
28
32
|
apiKey,
|
|
29
33
|
root,
|
|
30
34
|
scope: options.scope,
|
|
31
35
|
maxAttemptsPerSprint: options.maxAttempts,
|
|
32
36
|
maxTotalBudgetUsd: options.maxBudget,
|
|
37
|
+
models,
|
|
33
38
|
});
|
|
39
|
+
const resolvedModels = harness.getModels();
|
|
40
|
+
console.log("");
|
|
41
|
+
console.log("Models:");
|
|
42
|
+
console.log(` Planner: ${resolvedModels.planner}`);
|
|
43
|
+
console.log(` Generator: ${resolvedModels.generator}`);
|
|
44
|
+
console.log(` Evaluator: ${resolvedModels.evaluator}`);
|
|
45
|
+
console.log("");
|
|
34
46
|
// Attach event listeners for terminal output
|
|
35
47
|
harness.on("phase:start", (data) => {
|
|
36
48
|
const sprint = data.sprint > 0 ? ` [Sprint ${data.sprint}]` : "";
|
package/dist/commands/run.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run.js","sourceRoot":"","sources":["../../src/commands/run.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"run.js","sourceRoot":"","sources":["../../src/commands/run.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,10 +8,16 @@ export interface RunAgentOptions {
|
|
|
8
8
|
prompt: string;
|
|
9
9
|
onActivity?: (tool: string, summary: string) => void;
|
|
10
10
|
}
|
|
11
|
+
export interface ModelOverrides {
|
|
12
|
+
planner?: string;
|
|
13
|
+
generator?: string;
|
|
14
|
+
evaluator?: string;
|
|
15
|
+
}
|
|
11
16
|
export declare class ContextManager {
|
|
12
17
|
private apiKey;
|
|
13
18
|
private projectContext;
|
|
14
|
-
|
|
19
|
+
private modelOverrides;
|
|
20
|
+
constructor(apiKey: string, projectContext: ProjectContext, modelOverrides?: ModelOverrides);
|
|
15
21
|
getModelForRole(role: AgentRole): string;
|
|
16
22
|
getToolsForRole(role: AgentRole): string[];
|
|
17
23
|
getMaxTurnsForRole(role: AgentRole): number;
|
|
@@ -7,7 +7,7 @@ const MODEL_MAP = {
|
|
|
7
7
|
};
|
|
8
8
|
// Default models per role
|
|
9
9
|
const DEFAULT_MODELS = {
|
|
10
|
-
planner: "
|
|
10
|
+
planner: "opus",
|
|
11
11
|
generator: "opus",
|
|
12
12
|
evaluator: "sonnet",
|
|
13
13
|
};
|
|
@@ -26,11 +26,17 @@ const DEFAULT_MAX_TURNS = {
|
|
|
26
26
|
export class ContextManager {
|
|
27
27
|
apiKey;
|
|
28
28
|
projectContext;
|
|
29
|
-
|
|
29
|
+
modelOverrides;
|
|
30
|
+
constructor(apiKey, projectContext, modelOverrides) {
|
|
30
31
|
this.apiKey = apiKey;
|
|
31
32
|
this.projectContext = projectContext;
|
|
33
|
+
this.modelOverrides = modelOverrides ?? {};
|
|
32
34
|
}
|
|
33
35
|
getModelForRole(role) {
|
|
36
|
+
// Priority: CLI override > config.yaml > default
|
|
37
|
+
const cliModel = this.modelOverrides[role];
|
|
38
|
+
if (cliModel)
|
|
39
|
+
return MODEL_MAP[cliModel] ?? cliModel;
|
|
34
40
|
const config = this.projectContext.config;
|
|
35
41
|
const configModel = config?.agents?.[role]?.model;
|
|
36
42
|
const shortName = configModel ?? DEFAULT_MODELS[role];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context-manager.js","sourceRoot":"","sources":["../../src/core/context-manager.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAE3D,gBAAgB;AAChB,MAAM,SAAS,GAA2B;IACxC,IAAI,EAAE,iBAAiB;IACvB,MAAM,EAAE,4BAA4B;IACpC,KAAK,EAAE,2BAA2B;CACnC,CAAC;AAEF,0BAA0B;AAC1B,MAAM,cAAc,GAA8B;IAChD,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"context-manager.js","sourceRoot":"","sources":["../../src/core/context-manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { existsSync, mkdirSync, readFileSync, writeFileSync, unlinkSync, appendFileSync } from "node:fs";
|
|
2
2
|
import { join } from "node:path";
|
|
3
3
|
import { stringify as toYaml, parse as parseYaml } from "yaml";
|
|
4
|
-
const EPHEMERAL_FILES = ["contract.md", "evaluation.md", "handoff.md", "sprints.md"];
|
|
4
|
+
const EPHEMERAL_FILES = ["contract.md", "evaluation.md", "handoff.md", "sprints.md", "events.json"];
|
|
5
5
|
const GITIGNORE_ENTRIES = [
|
|
6
6
|
"# agents-harness (ephemeral files)",
|
|
7
7
|
".harness/spec.md",
|
|
@@ -11,6 +11,7 @@ const GITIGNORE_ENTRIES = [
|
|
|
11
11
|
".harness/handoff.md",
|
|
12
12
|
".harness/progress.md",
|
|
13
13
|
".harness/summary.md",
|
|
14
|
+
".harness/events.json",
|
|
14
15
|
];
|
|
15
16
|
export class FileProtocol {
|
|
16
17
|
harnessDir;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"file-protocol.js","sourceRoot":"","sources":["../../src/core/file-protocol.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,aAAa,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AACzG,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,SAAS,IAAI,MAAM,EAAE,KAAK,IAAI,SAAS,EAAE,MAAM,MAAM,CAAC;AAG/D,MAAM,eAAe,GAAG,CAAC,aAAa,EAAE,eAAe,EAAE,YAAY,EAAE,YAAY,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"file-protocol.js","sourceRoot":"","sources":["../../src/core/file-protocol.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { EventEmitter } from "node:events";
|
|
2
2
|
import type { Progress } from "./types.js";
|
|
3
|
+
import { type ModelOverrides } from "./context-manager.js";
|
|
3
4
|
export interface HarnessOptions {
|
|
4
5
|
apiKey: string;
|
|
5
6
|
root: string;
|
|
@@ -7,6 +8,7 @@ export interface HarnessOptions {
|
|
|
7
8
|
maxAttemptsPerSprint?: number;
|
|
8
9
|
maxBudgetPerSprintUsd?: number;
|
|
9
10
|
maxTotalBudgetUsd?: number;
|
|
11
|
+
models?: ModelOverrides;
|
|
10
12
|
}
|
|
11
13
|
export declare class Harness extends EventEmitter {
|
|
12
14
|
private contextManager;
|
|
@@ -27,4 +29,5 @@ export declare class Harness extends EventEmitter {
|
|
|
27
29
|
resume(): Promise<void>;
|
|
28
30
|
stop(): void;
|
|
29
31
|
getProgress(): Progress;
|
|
32
|
+
getModels(): Record<string, string>;
|
|
30
33
|
}
|
|
@@ -18,7 +18,7 @@ export class Harness extends EventEmitter {
|
|
|
18
18
|
maxBudgetPerSprintUsd: opts.maxBudgetPerSprintUsd ?? config?.maxBudgetPerSprintUsd ?? 5,
|
|
19
19
|
maxTotalBudgetUsd: opts.maxTotalBudgetUsd ?? config?.maxTotalBudgetUsd ?? 50,
|
|
20
20
|
};
|
|
21
|
-
this.contextManager = new ContextManager(opts.apiKey, projectContext);
|
|
21
|
+
this.contextManager = new ContextManager(opts.apiKey, projectContext, opts.models);
|
|
22
22
|
this.fileProtocol = new FileProtocol(opts.root);
|
|
23
23
|
this.progress = this.initProgress("");
|
|
24
24
|
}
|
|
@@ -90,6 +90,7 @@ export class Harness extends EventEmitter {
|
|
|
90
90
|
async run(spec) {
|
|
91
91
|
this.fileProtocol.ensureDir();
|
|
92
92
|
this.fileProtocol.ensureGitignore();
|
|
93
|
+
this.fileProtocol.cleanEphemeral();
|
|
93
94
|
this.progress = this.initProgress(spec);
|
|
94
95
|
this.aborted = false;
|
|
95
96
|
try {
|
|
@@ -240,5 +241,12 @@ export class Harness extends EventEmitter {
|
|
|
240
241
|
getProgress() {
|
|
241
242
|
return { ...this.progress };
|
|
242
243
|
}
|
|
244
|
+
getModels() {
|
|
245
|
+
return {
|
|
246
|
+
planner: this.contextManager.getModelForRole("planner"),
|
|
247
|
+
generator: this.contextManager.getModelForRole("generator"),
|
|
248
|
+
evaluator: this.contextManager.getModelForRole("evaluator"),
|
|
249
|
+
};
|
|
250
|
+
}
|
|
243
251
|
}
|
|
244
252
|
//# sourceMappingURL=orchestrator.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"orchestrator.js","sourceRoot":"","sources":["../../src/core/orchestrator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAO3C,OAAO,EAAE,cAAc,
|
|
1
|
+
{"version":3,"file":"orchestrator.js","sourceRoot":"","sources":["../../src/core/orchestrator.ts"],"names":[],"mappings":"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"}
|
package/dist/core/types.d.ts
CHANGED
|
@@ -7,8 +7,12 @@ export declare class DashboardServer {
|
|
|
7
7
|
private projectRoot;
|
|
8
8
|
private fileWatcher;
|
|
9
9
|
private debounceTimers;
|
|
10
|
+
private eventLog;
|
|
10
11
|
constructor(port?: number, projectRoot?: string);
|
|
11
12
|
private handleRequest;
|
|
13
|
+
private getEventsFilePath;
|
|
14
|
+
private loadEventLog;
|
|
15
|
+
private persistEventLog;
|
|
12
16
|
private buildSnapshot;
|
|
13
17
|
private startFileWatcher;
|
|
14
18
|
start(): Promise<void>;
|
package/dist/dashboard/server.js
CHANGED
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import { createServer } from "node:http";
|
|
2
|
-
import { readFileSync, existsSync, watch } from "node:fs";
|
|
2
|
+
import { readFileSync, writeFileSync, existsSync, watch } from "node:fs";
|
|
3
3
|
import { join, dirname } from "node:path";
|
|
4
4
|
import { fileURLToPath } from "node:url";
|
|
5
5
|
import { parse as parseYaml } from "yaml";
|
|
6
6
|
import { WebSocketBroadcaster } from "./socket.js";
|
|
7
|
+
const EVENTS_FILE = "events.json";
|
|
7
8
|
const __dirname = dirname(fileURLToPath(import.meta.url));
|
|
8
9
|
const ALLOWED_FILES = [
|
|
9
10
|
"spec.md", "sprints.md", "contract.md",
|
|
@@ -17,9 +18,11 @@ export class DashboardServer {
|
|
|
17
18
|
projectRoot;
|
|
18
19
|
fileWatcher = null;
|
|
19
20
|
debounceTimers = new Map();
|
|
21
|
+
eventLog = [];
|
|
20
22
|
constructor(port = 3117, projectRoot) {
|
|
21
23
|
this.port = port;
|
|
22
24
|
this.projectRoot = projectRoot ?? null;
|
|
25
|
+
this.loadEventLog();
|
|
23
26
|
this.server = createServer(this.handleRequest.bind(this));
|
|
24
27
|
this.broadcaster = new WebSocketBroadcaster(this.server, () => this.buildSnapshot());
|
|
25
28
|
}
|
|
@@ -56,6 +59,29 @@ export class DashboardServer {
|
|
|
56
59
|
res.end("Dashboard file not found");
|
|
57
60
|
}
|
|
58
61
|
}
|
|
62
|
+
getEventsFilePath() {
|
|
63
|
+
if (!this.projectRoot)
|
|
64
|
+
return null;
|
|
65
|
+
return join(this.projectRoot, ".harness", EVENTS_FILE);
|
|
66
|
+
}
|
|
67
|
+
loadEventLog() {
|
|
68
|
+
const filePath = this.getEventsFilePath();
|
|
69
|
+
if (!filePath || !existsSync(filePath))
|
|
70
|
+
return;
|
|
71
|
+
try {
|
|
72
|
+
this.eventLog = JSON.parse(readFileSync(filePath, "utf-8"));
|
|
73
|
+
}
|
|
74
|
+
catch { /* ignore corrupt file */ }
|
|
75
|
+
}
|
|
76
|
+
persistEventLog() {
|
|
77
|
+
const filePath = this.getEventsFilePath();
|
|
78
|
+
if (!filePath)
|
|
79
|
+
return;
|
|
80
|
+
try {
|
|
81
|
+
writeFileSync(filePath, JSON.stringify(this.eventLog), "utf-8");
|
|
82
|
+
}
|
|
83
|
+
catch { /* ignore write errors */ }
|
|
84
|
+
}
|
|
59
85
|
buildSnapshot() {
|
|
60
86
|
if (!this.projectRoot)
|
|
61
87
|
return null;
|
|
@@ -75,7 +101,7 @@ export class DashboardServer {
|
|
|
75
101
|
}
|
|
76
102
|
catch { /* ignore */ }
|
|
77
103
|
}
|
|
78
|
-
return { type: "state:snapshot", data: { files, progress } };
|
|
104
|
+
return { type: "state:snapshot", data: { files, progress, events: this.eventLog } };
|
|
79
105
|
}
|
|
80
106
|
startFileWatcher() {
|
|
81
107
|
if (!this.projectRoot)
|
|
@@ -141,6 +167,11 @@ export class DashboardServer {
|
|
|
141
167
|
return this.port;
|
|
142
168
|
}
|
|
143
169
|
broadcast(event) {
|
|
170
|
+
// Persist events that carry state (skip file:update and state:snapshot)
|
|
171
|
+
if (event.type !== "file:update" && event.type !== "state:snapshot") {
|
|
172
|
+
this.eventLog.push(event);
|
|
173
|
+
this.persistEventLog();
|
|
174
|
+
}
|
|
144
175
|
this.broadcaster.broadcast(event);
|
|
145
176
|
}
|
|
146
177
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/dashboard/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAA0D,MAAM,WAAW,CAAC;AACjG,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,KAAK,EAAkB,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/dashboard/server.ts"],"names":[],"mappings":"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"}
|
|
@@ -522,7 +522,13 @@
|
|
|
522
522
|
}
|
|
523
523
|
}
|
|
524
524
|
}
|
|
525
|
-
//
|
|
525
|
+
// Replay persisted events to rebuild full state (sprints, activities, cost, etc.)
|
|
526
|
+
if (data.events && data.events.length > 0) {
|
|
527
|
+
for (var i = 0; i < data.events.length; i++) {
|
|
528
|
+
handleEvent(data.events[i]);
|
|
529
|
+
}
|
|
530
|
+
}
|
|
531
|
+
// Restore progress (override with latest from progress file)
|
|
526
532
|
if (data.progress) {
|
|
527
533
|
var p = data.progress;
|
|
528
534
|
state.currentPhase = p.currentPhase;
|
|
@@ -533,11 +539,12 @@
|
|
|
533
539
|
state.budget = p.maxBudgetUsd || 0;
|
|
534
540
|
if (p.sprints) {
|
|
535
541
|
for (var sn in p.sprints) {
|
|
542
|
+
var existing = state.sprints[sn];
|
|
536
543
|
state.sprints[sn] = {
|
|
537
544
|
status: p.sprints[sn].status,
|
|
538
545
|
attempts: p.sprints[sn].attempts,
|
|
539
546
|
cost: p.sprints[sn].costUsd || 0,
|
|
540
|
-
eval: null,
|
|
547
|
+
eval: existing ? existing.eval : null,
|
|
541
548
|
};
|
|
542
549
|
}
|
|
543
550
|
}
|
|
@@ -551,6 +558,7 @@
|
|
|
551
558
|
renderSprints();
|
|
552
559
|
renderFileTabs();
|
|
553
560
|
renderFileContent();
|
|
561
|
+
renderActivity();
|
|
554
562
|
if (state.totalCost > 0) {
|
|
555
563
|
document.getElementById('total-cost').textContent = '$' + state.totalCost.toFixed(2);
|
|
556
564
|
}
|