harness-dispatch 0.9.0 → 0.10.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +560 -1
- package/README.md +74 -43
- package/dist/auth.d.ts.map +1 -1
- package/dist/auth.js.map +1 -1
- package/dist/bin.d.ts.map +1 -1
- package/dist/bin.js +166 -29
- package/dist/bin.js.map +1 -1
- package/dist/config/coercions.d.ts +5 -0
- package/dist/config/coercions.d.ts.map +1 -1
- package/dist/config/coercions.js +8 -0
- package/dist/config/coercions.js.map +1 -1
- package/dist/config/protocol.js.map +1 -1
- package/dist/config/validation.d.ts.map +1 -1
- package/dist/config/validation.js.map +1 -1
- package/dist/config.d.ts +11 -3
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +111 -148
- package/dist/config.js.map +1 -1
- package/dist/configure-yaml.d.ts.map +1 -1
- package/dist/configure-yaml.js +57 -13
- package/dist/configure-yaml.js.map +1 -1
- package/dist/dispatch-log.d.ts.map +1 -1
- package/dist/dispatch-log.js +3 -1
- package/dist/dispatch-log.js.map +1 -1
- package/dist/dispatchers/generic-cli.d.ts.map +1 -1
- package/dist/dispatchers/generic-cli.js +189 -97
- package/dist/dispatchers/generic-cli.js.map +1 -1
- package/dist/dispatchers/openai-compatible.d.ts +0 -5
- package/dist/dispatchers/openai-compatible.d.ts.map +1 -1
- package/dist/dispatchers/openai-compatible.js +129 -82
- package/dist/dispatchers/openai-compatible.js.map +1 -1
- package/dist/dispatchers/shared/harness-login.d.ts.map +1 -1
- package/dist/dispatchers/shared/harness-login.js +7 -2
- package/dist/dispatchers/shared/harness-login.js.map +1 -1
- package/dist/dispatchers/shared/stream-subprocess.d.ts.map +1 -1
- package/dist/dispatchers/shared/stream-subprocess.js +7 -60
- package/dist/dispatchers/shared/stream-subprocess.js.map +1 -1
- package/dist/file-lock.d.ts.map +1 -1
- package/dist/file-lock.js +31 -19
- package/dist/file-lock.js.map +1 -1
- package/dist/harness-presets.d.ts +51 -0
- package/dist/harness-presets.d.ts.map +1 -0
- package/dist/harness-presets.js +154 -0
- package/dist/harness-presets.js.map +1 -0
- package/dist/http/parse.d.ts +8 -1
- package/dist/http/parse.d.ts.map +1 -1
- package/dist/http/parse.js +10 -3
- package/dist/http/parse.js.map +1 -1
- package/dist/http/server.d.ts.map +1 -1
- package/dist/http/server.js +9 -2
- package/dist/http/server.js.map +1 -1
- package/dist/job-runner.js +6 -0
- package/dist/job-runner.js.map +1 -1
- package/dist/jobs/lifecycle.d.ts +100 -0
- package/dist/jobs/lifecycle.d.ts.map +1 -0
- package/dist/jobs/lifecycle.js +263 -0
- package/dist/jobs/lifecycle.js.map +1 -0
- package/dist/jobs/read.d.ts +17 -0
- package/dist/jobs/read.d.ts.map +1 -0
- package/dist/jobs/read.js +103 -0
- package/dist/jobs/read.js.map +1 -0
- package/dist/jobs/run.d.ts +45 -0
- package/dist/jobs/run.d.ts.map +1 -0
- package/dist/jobs/run.js +351 -0
- package/dist/jobs/run.js.map +1 -0
- package/dist/jobs/start.d.ts +9 -0
- package/dist/jobs/start.d.ts.map +1 -0
- package/dist/jobs/start.js +126 -0
- package/dist/jobs/start.js.map +1 -0
- package/dist/jobs/store.d.ts.map +1 -1
- package/dist/jobs/store.js +13 -3
- package/dist/jobs/store.js.map +1 -1
- package/dist/jobs/supervisor.d.ts +151 -0
- package/dist/jobs/supervisor.d.ts.map +1 -0
- package/dist/jobs/supervisor.js +679 -0
- package/dist/jobs/supervisor.js.map +1 -0
- package/dist/jobs.d.ts +15 -233
- package/dist/jobs.d.ts.map +1 -1
- package/dist/jobs.js +14 -1409
- package/dist/jobs.js.map +1 -1
- package/dist/leaderboard.d.ts.map +1 -1
- package/dist/leaderboard.js +5 -1
- package/dist/leaderboard.js.map +1 -1
- package/dist/mcp/config-hot-reload.d.ts.map +1 -1
- package/dist/mcp/config-hot-reload.js +4 -1
- package/dist/mcp/config-hot-reload.js.map +1 -1
- package/dist/mcp/dispatcher-factory.js +1 -1
- package/dist/mcp/dispatcher-factory.js.map +1 -1
- package/dist/mcp/resources.d.ts.map +1 -1
- package/dist/mcp/resources.js +3 -2
- package/dist/mcp/resources.js.map +1 -1
- package/dist/mcp/tools.d.ts +9 -2
- package/dist/mcp/tools.d.ts.map +1 -1
- package/dist/mcp/tools.js +45 -6
- package/dist/mcp/tools.js.map +1 -1
- package/dist/observability/spans.d.ts.map +1 -1
- package/dist/observability/spans.js +10 -2
- package/dist/observability/spans.js.map +1 -1
- package/dist/redaction.d.ts +90 -0
- package/dist/redaction.d.ts.map +1 -0
- package/dist/redaction.js +221 -0
- package/dist/redaction.js.map +1 -0
- package/dist/router.d.ts +12 -23
- package/dist/router.d.ts.map +1 -1
- package/dist/router.js +83 -224
- package/dist/router.js.map +1 -1
- package/dist/state-dir.d.ts.map +1 -1
- package/dist/state-dir.js +15 -1
- package/dist/state-dir.js.map +1 -1
- package/dist/status.d.ts +14 -3
- package/dist/status.d.ts.map +1 -1
- package/dist/status.js +36 -3
- package/dist/status.js.map +1 -1
- package/dist/workspace-lock.d.ts +20 -0
- package/dist/workspace-lock.d.ts.map +1 -1
- package/dist/workspace-lock.js +63 -0
- package/dist/workspace-lock.js.map +1 -1
- package/dist/workspace-resolve.d.ts +0 -9
- package/dist/workspace-resolve.d.ts.map +1 -1
- package/dist/workspace-resolve.js +38 -183
- package/dist/workspace-resolve.js.map +1 -1
- package/dist/workspaces.d.ts.map +1 -1
- package/dist/workspaces.js +63 -139
- package/dist/workspaces.js.map +1 -1
- package/package.json +5 -4
package/dist/status.js
CHANGED
|
@@ -70,6 +70,18 @@ export function redactEndpointHost(baseUrl) {
|
|
|
70
70
|
return "<endpoint>";
|
|
71
71
|
}
|
|
72
72
|
}
|
|
73
|
+
/**
|
|
74
|
+
* Remove one secret from text by value.
|
|
75
|
+
*
|
|
76
|
+
* Split/join rather than a regex: a key can contain regex metacharacters, and
|
|
77
|
+
* building a pattern from a credential is how you get a ReDoS or a silent
|
|
78
|
+
* non-match on the one string that mattered.
|
|
79
|
+
*/
|
|
80
|
+
export function redactSecretValue(text, secret) {
|
|
81
|
+
if (secret === undefined || secret.length === 0)
|
|
82
|
+
return text;
|
|
83
|
+
return text.split(secret).join("<redacted>");
|
|
84
|
+
}
|
|
73
85
|
/**
|
|
74
86
|
* Strip an endpoint's credential-bearing parts out of TEXT WE DID NOT WRITE.
|
|
75
87
|
*
|
|
@@ -86,16 +98,29 @@ export function redactEndpointHost(baseUrl) {
|
|
|
86
98
|
* into a bug report. Reproduced by an acceptance pass.
|
|
87
99
|
*
|
|
88
100
|
* Each credential-bearing piece is removed by value, so it does not matter how
|
|
89
|
-
* the message happened to assemble them: the
|
|
90
|
-
* hostname, userinfo, and every query value on
|
|
101
|
+
* the message happened to assemble them: the configured api key, then the
|
|
102
|
+
* whole base URL, then origin, hostname, userinfo, and every query value on
|
|
103
|
+
* their own. Pass `apiKey` wherever it is known — for most routes the key is
|
|
104
|
+
* sent as a header and is not part of the URL at all, so omitting it leaves
|
|
105
|
+
* the commonest credential unscrubbed.
|
|
91
106
|
*/
|
|
92
|
-
export function scrubEndpointSecrets(text, baseUrl) {
|
|
107
|
+
export function scrubEndpointSecrets(text, baseUrl, apiKey) {
|
|
93
108
|
let out = text;
|
|
94
109
|
const replaceAll = (needle, with_) => {
|
|
95
110
|
if (needle.length === 0)
|
|
96
111
|
return;
|
|
97
112
|
out = out.split(needle).join(with_);
|
|
98
113
|
};
|
|
114
|
+
// The configured key, first, and it is NOT a part of the URL for most
|
|
115
|
+
// routes: every endpoint in this project's own config authenticates with an
|
|
116
|
+
// `Authorization: Bearer` or `x-api-key` header. This function's contract is
|
|
117
|
+
// to strip credentials out of text we did not write, and it was stripping
|
|
118
|
+
// only the credential-bearing pieces of the base URL — so an endpoint that
|
|
119
|
+
// echoed the request HEADER back in its error ("invalid api key: Bearer
|
|
120
|
+
// sk-…") passed the key through untouched, to the terminal and into
|
|
121
|
+
// `logs/dispatches.jsonl`. Found by an acceptance pass, reproduced against
|
|
122
|
+
// the built artifact.
|
|
123
|
+
out = redactSecretValue(out, apiKey);
|
|
99
124
|
replaceAll(baseUrl, redactEndpointHost(baseUrl));
|
|
100
125
|
try {
|
|
101
126
|
const url = new URL(baseUrl);
|
|
@@ -347,6 +372,14 @@ export function buildUsage(status) {
|
|
|
347
372
|
}
|
|
348
373
|
export function renderUsageText(usage) {
|
|
349
374
|
const lines = ["harness-dispatch usage", ""];
|
|
375
|
+
if (usage.routes.length === 0) {
|
|
376
|
+
// A bare header and nothing else reads as "this command is broken", which
|
|
377
|
+
// is the one thing it does not mean. Carried as an open item across three
|
|
378
|
+
// releases because it looked cosmetic; it is the first thing a user with
|
|
379
|
+
// no routes sees, and it told them nothing about why or what to do.
|
|
380
|
+
lines.push("No routes configured.", "", "Install a harness CLI (claude, codex, cursor-agent, agy) and it is picked", "up automatically, or add an `endpoints:` entry to config.yaml — those need", "no CLI. `harness-dispatch doctor` says which of the two applies here.", "");
|
|
381
|
+
return lines.join("\n");
|
|
382
|
+
}
|
|
350
383
|
for (const route of usage.routes) {
|
|
351
384
|
const mark = route.available && route.enabled ? "ok" : "off";
|
|
352
385
|
const quota = route.quotaRemaining !== undefined && route.quotaLimit !== undefined
|
package/dist/status.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"status.js","sourceRoot":"","sources":["../src/status.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"status.js","sourceRoot":"","sources":["../src/status.ts"],"names":[],"mappings":"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"}
|
package/dist/workspace-lock.d.ts
CHANGED
|
@@ -37,4 +37,24 @@ export declare const LOCK_STALE_MS = 90000;
|
|
|
37
37
|
* matching the job runtime ceiling — a legitimate holder can hold it that long.
|
|
38
38
|
*/
|
|
39
39
|
export declare function acquireWorkspaceLock(workingDir: string, timeoutMs?: number): Promise<() => void>;
|
|
40
|
+
/**
|
|
41
|
+
* Delete lock files whose holder is definitely gone.
|
|
42
|
+
*
|
|
43
|
+
* A dead lock IS reclaimed correctly — but only when something contends for
|
|
44
|
+
* that same working directory. Nothing contends for a path you dispatched
|
|
45
|
+
* against once and moved on from, so its file stays forever: one per distinct
|
|
46
|
+
* workspace, indefinitely. Found by a resource audit, which measured a
|
|
47
|
+
* seven-day-old lock still sitting there.
|
|
48
|
+
*
|
|
49
|
+
* Tiny individually (a couple of hundred bytes), and the point is the count
|
|
50
|
+
* rather than the size — this directory is walked when locks are examined, so
|
|
51
|
+
* an unbounded file count is a cost paid later.
|
|
52
|
+
*
|
|
53
|
+
* Reuses `isDead` for a readable record, and honours the same
|
|
54
|
+
* `UNREADABLE_GRACE_MS` the acquire path gives an unreadable one. The first
|
|
55
|
+
* version of this claimed both and only did the first: it deleted an
|
|
56
|
+
* unreadable lock on sight, measured at 25ms against the acquire path's
|
|
57
|
+
* 1018ms, which is precisely the looser second rule the claim denied.
|
|
58
|
+
*/
|
|
59
|
+
export declare function pruneDeadWorkspaceLocks(): Promise<void>;
|
|
40
60
|
//# sourceMappingURL=workspace-lock.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workspace-lock.d.ts","sourceRoot":"","sources":["../src/workspace-lock.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;
|
|
1
|
+
{"version":3,"file":"workspace-lock.d.ts","sourceRoot":"","sources":["../src/workspace-lock.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AASH,kFAAkF;AAClF,eAAO,MAAM,aAAa,QAAS,CAAC;AAwMpC;;;;;;GAMG;AACH,wBAAsB,oBAAoB,CACxC,UAAU,EAAE,MAAM,EAClB,SAAS,SAAiB,GACzB,OAAO,CAAC,MAAM,IAAI,CAAC,CA+BrB;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAsB,uBAAuB,IAAI,OAAO,CAAC,IAAI,CAAC,CAqC7D"}
|
package/dist/workspace-lock.js
CHANGED
|
@@ -29,6 +29,7 @@
|
|
|
29
29
|
*/
|
|
30
30
|
import { createHash } from "node:crypto";
|
|
31
31
|
import { mkdirSync, readFileSync, renameSync, rmSync, writeFileSync } from "node:fs";
|
|
32
|
+
import { readdir, rm, stat } from "node:fs/promises";
|
|
32
33
|
import path from "node:path";
|
|
33
34
|
import { stateRoot } from "./state-dir.js";
|
|
34
35
|
/** Matches ORPHAN_THRESHOLD_MS in jobs.ts: one notion of "the holder is gone". */
|
|
@@ -255,4 +256,66 @@ export async function acquireWorkspaceLock(workingDir, timeoutMs = 60 * 60 * 100
|
|
|
255
256
|
inProcessLocks.delete(key);
|
|
256
257
|
};
|
|
257
258
|
}
|
|
259
|
+
/**
|
|
260
|
+
* Delete lock files whose holder is definitely gone.
|
|
261
|
+
*
|
|
262
|
+
* A dead lock IS reclaimed correctly — but only when something contends for
|
|
263
|
+
* that same working directory. Nothing contends for a path you dispatched
|
|
264
|
+
* against once and moved on from, so its file stays forever: one per distinct
|
|
265
|
+
* workspace, indefinitely. Found by a resource audit, which measured a
|
|
266
|
+
* seven-day-old lock still sitting there.
|
|
267
|
+
*
|
|
268
|
+
* Tiny individually (a couple of hundred bytes), and the point is the count
|
|
269
|
+
* rather than the size — this directory is walked when locks are examined, so
|
|
270
|
+
* an unbounded file count is a cost paid later.
|
|
271
|
+
*
|
|
272
|
+
* Reuses `isDead` for a readable record, and honours the same
|
|
273
|
+
* `UNREADABLE_GRACE_MS` the acquire path gives an unreadable one. The first
|
|
274
|
+
* version of this claimed both and only did the first: it deleted an
|
|
275
|
+
* unreadable lock on sight, measured at 25ms against the acquire path's
|
|
276
|
+
* 1018ms, which is precisely the looser second rule the claim denied.
|
|
277
|
+
*/
|
|
278
|
+
export async function pruneDeadWorkspaceLocks() {
|
|
279
|
+
const dir = path.join(stateRoot(), "workspace-locks");
|
|
280
|
+
let entries;
|
|
281
|
+
try {
|
|
282
|
+
entries = await readdir(dir);
|
|
283
|
+
}
|
|
284
|
+
catch {
|
|
285
|
+
return; // No lock directory yet: nothing to sweep.
|
|
286
|
+
}
|
|
287
|
+
for (const entry of entries) {
|
|
288
|
+
if (!entry.endsWith(".json"))
|
|
289
|
+
continue;
|
|
290
|
+
const file = path.join(dir, entry);
|
|
291
|
+
try {
|
|
292
|
+
const record = readRecord(file);
|
|
293
|
+
if (record !== undefined) {
|
|
294
|
+
if (!isDead(record))
|
|
295
|
+
continue;
|
|
296
|
+
await rm(file, { force: true });
|
|
297
|
+
continue;
|
|
298
|
+
}
|
|
299
|
+
// UNREADABLE, and this is where the claim that "the sweep uses exactly
|
|
300
|
+
// the rule that lets a waiter steal it" was FALSE — measured by an
|
|
301
|
+
// acceptance pass at 25ms here against 1018ms there.
|
|
302
|
+
//
|
|
303
|
+
// The acquire path gives an unreadable record UNREADABLE_GRACE_MS before
|
|
304
|
+
// treating it as stealable, because a torn read of a mid-rewrite
|
|
305
|
+
// heartbeat used to be enough to take a LIVE holder's lock. Deleting on
|
|
306
|
+
// sight here reintroduced exactly that: `tryCreate` opens with `wx` and
|
|
307
|
+
// then writes, so a real empty-file window exists, and an older build
|
|
308
|
+
// rewriting a heartbeat in place widens it. This sweep runs before every
|
|
309
|
+
// job start, so losing that race means two dispatches editing one
|
|
310
|
+
// `shared_locked` workspace — the outcome the lock exists to prevent.
|
|
311
|
+
const age = Date.now() - (await stat(file)).mtimeMs;
|
|
312
|
+
if (age <= UNREADABLE_GRACE_MS)
|
|
313
|
+
continue;
|
|
314
|
+
await rm(file, { force: true });
|
|
315
|
+
}
|
|
316
|
+
catch {
|
|
317
|
+
// Vanished mid-sweep, or another process got there first.
|
|
318
|
+
}
|
|
319
|
+
}
|
|
320
|
+
}
|
|
258
321
|
//# sourceMappingURL=workspace-lock.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workspace-lock.js","sourceRoot":"","sources":["../src/workspace-lock.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"workspace-lock.js","sourceRoot":"","sources":["../src/workspace-lock.ts"],"names":[],"mappings":"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"}
|
|
@@ -38,15 +38,6 @@ export declare function isResolvable(run: WorkspaceRun | undefined): run is Work
|
|
|
38
38
|
* else.
|
|
39
39
|
*/
|
|
40
40
|
export declare function buildWorkspacePatch(run: WorkspaceRun): Promise<string>;
|
|
41
|
-
/**
|
|
42
|
-
* Rewrite `git diff --no-index` headers so the patch is repo-relative.
|
|
43
|
-
*
|
|
44
|
-
* --no-index emits the absolute paths it was given (`--- a/C:/long/path/...`),
|
|
45
|
-
* which applies nowhere but this machine. Rewriting them to a/<rel> and
|
|
46
|
-
* b/<rel> makes the patch portable and applicable with -p1, which is what
|
|
47
|
-
* every other git patch in the world expects.
|
|
48
|
-
*/
|
|
49
|
-
export declare function normaliseNoIndexPaths(patch: string, origRoot: string, isoRoot: string): string;
|
|
50
41
|
export interface PatchResult {
|
|
51
42
|
jobId: string;
|
|
52
43
|
policy: WorkspaceRun["policy"];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workspace-resolve.d.ts","sourceRoot":"","sources":["../src/workspace-resolve.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAQH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAK/C,+EAA+E;AAC/E,eAAO,MAAM,eAAe,QAAkB,CAAC;AAE/C,iFAAiF;AACjF,eAAO,MAAM,eAAe,QAAS,CAAC;AAiItC,wBAAgB,YAAY,CAAC,GAAG,EAAE,YAAY,GAAG,SAAS,GAAG,GAAG,IAAI,YAAY,CAE/E;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAsB,mBAAmB,CAAC,GAAG,EAAE,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC,
|
|
1
|
+
{"version":3,"file":"workspace-resolve.d.ts","sourceRoot":"","sources":["../src/workspace-resolve.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAQH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAK/C,+EAA+E;AAC/E,eAAO,MAAM,eAAe,QAAkB,CAAC;AAE/C,iFAAiF;AACjF,eAAO,MAAM,eAAe,QAAS,CAAC;AAiItC,wBAAgB,YAAY,CAAC,GAAG,EAAE,YAAY,GAAG,SAAS,GAAG,GAAG,IAAI,YAAY,CAE/E;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAsB,mBAAmB,CAAC,GAAG,EAAE,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC,CAgG5E;AAuRD,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,YAAY,CAAC,QAAQ,CAAC,CAAC;IAC/B,2EAA2E;IAC3E,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,8EAA8E;IAC9E,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,OAAO,CAAC;IACnB,YAAY,CAAC,EAAE,YAAY,CAAC,cAAc,CAAC,CAAC;CAC7C;AAED,0EAA0E;AAC1E,wBAAsB,aAAa,CACjC,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,GAAG,EAAE,YAAY,GAChB,OAAO,CAAC,WAAW,CAAC,CAiBtB;AA+DD,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,YAAY,CAAC,cAAc,CAAC,CAAC;CAC7C;AAwBD;;;;;;;GAOG;AACH,wBAAsB,cAAc,CAClC,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,GAAG,EAAE,YAAY,EACjB,IAAI,GAAE;IAAE,KAAK,CAAC,EAAE,OAAO,CAAA;CAAO,GAC7B,OAAO,CAAC,WAAW,CAAC,CAsOtB;AAED,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,OAAO,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;;;;;;;GAQG;AACH,wBAAsB,gBAAgB,CACpC,KAAK,EAAE,MAAM,EACb,GAAG,EAAE,YAAY,EACjB,IAAI,GAAE;IAAE,KAAK,CAAC,EAAE,OAAO,CAAA;CAAO,GAC7B,OAAO,CAAC,aAAa,CAAC,CA6ExB;AAED,0DAA0D;AAC1D,wBAAsB,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAM7E"}
|
|
@@ -22,7 +22,7 @@ import { existsSync } from "node:fs";
|
|
|
22
22
|
import { mkdir, readFile, rm, writeFile } from "node:fs/promises";
|
|
23
23
|
import path from "node:path";
|
|
24
24
|
import { promisify } from "node:util";
|
|
25
|
-
import { eolDigest,
|
|
25
|
+
import { eolDigest, GIT_ENV, isUnderOrEqual, workspacesBase } from "./workspaces.js";
|
|
26
26
|
const execFile = promisify(execFileCb);
|
|
27
27
|
/** Patches are read into memory and returned over MCP, so they are bounded. */
|
|
28
28
|
export const MAX_PATCH_BYTES = 2 * 1024 * 1024;
|
|
@@ -235,40 +235,22 @@ export async function buildWorkspacePatch(run) {
|
|
|
235
235
|
if (run.changedFiles !== undefined) {
|
|
236
236
|
return buildCopyPatchFromChanges(run, root, run.changedFiles);
|
|
237
237
|
}
|
|
238
|
-
//
|
|
239
|
-
//
|
|
240
|
-
//
|
|
238
|
+
// A job recorded before `changedFiles` existed cannot be patched safely, and
|
|
239
|
+
// can no longer exist: the field has been written since 2026-07-13 and an
|
|
240
|
+
// isolated workspace is pruned after a day, so any run without it is older
|
|
241
|
+
// than its own workspace. This used to fall back to `git diff --no-index`
|
|
242
|
+
// over the whole directory pair, with ~170 lines of path normalisation and
|
|
243
|
+
// section filtering to undo the damage that comparison does — machinery that
|
|
244
|
+
// no input could reach any more, whose own comment still described the copy
|
|
245
|
+
// as living inside the project, which stopped being true in 0.7.0.
|
|
241
246
|
//
|
|
242
|
-
//
|
|
243
|
-
//
|
|
244
|
-
//
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
const isoPosix = toPosix(root);
|
|
250
|
-
// --no-renames, and it is load-bearing rather than cosmetic.
|
|
251
|
-
//
|
|
252
|
-
// The copy lives INSIDE the project, so a file the agent CREATED appears on
|
|
253
|
-
// both sides of the comparison with identical content: once as
|
|
254
|
-
// `.harness-dispatch/.../workspace/notes.txt` while git scans the project,
|
|
255
|
-
// and once as `notes.txt` inside the copy. Rename detection paired the two
|
|
256
|
-
// and emitted NOTHING AT ALL for that file — no deletion, no addition — so
|
|
257
|
-
// the patch came back empty, `apply` reported "the agent changed nothing"
|
|
258
|
-
// beside its own list saying the file was added, and `discard` then deleted
|
|
259
|
-
// the only copy of the work. A MODIFIED file was unaffected, which is why
|
|
260
|
-
// this survived three releases of the feature.
|
|
261
|
-
//
|
|
262
|
-
// Disabling rename detection emits the deletion and the addition separately;
|
|
263
|
-
// dropSectionsUnder was already written to strip the former and keep the
|
|
264
|
-
// latter. Nothing else here wants renames: a patch that says "rename" only
|
|
265
|
-
// applies cleanly if the source path is where the patch thinks it is, and on
|
|
266
|
-
// this comparison it never is.
|
|
267
|
-
const raw = await gitDiff(["diff", "--no-index", "--no-renames", "--binary", "--", origPosix, isoPosix], path.dirname(run.originalWorkingDir));
|
|
268
|
-
// Order matters: the workspace itself is filtered out on ABSOLUTE paths,
|
|
269
|
-
// before normalisation collapses them.
|
|
270
|
-
const withoutWorkspace = dropSectionsUnder(raw, toPosix(run.workspaceRoot ?? ""));
|
|
271
|
-
return dropExcludedSections(normaliseNoIndexPaths(withoutWorkspace, origPosix, isoPosix));
|
|
247
|
+
// Refusing matches what the `git_worktree` branch above already does for its
|
|
248
|
+
// own equivalent case, and is the safe direction: the alternative is emitting
|
|
249
|
+
// a patch from an untested path.
|
|
250
|
+
throw new Error("This copy job predates changed-file recording, so a safe patch cannot be " +
|
|
251
|
+
"produced — diffing the whole directory pair could report files the copy " +
|
|
252
|
+
"never included as deletions. Inspect it by hand at " +
|
|
253
|
+
`${root}, or re-run the dispatch.`);
|
|
272
254
|
}
|
|
273
255
|
/** git's own name for "this side does not exist", accepted on Windows too. */
|
|
274
256
|
const NULL_PATH = "/dev/null";
|
|
@@ -530,142 +512,9 @@ async function changesNotInProject(run, changed) {
|
|
|
530
512
|
}
|
|
531
513
|
return missing;
|
|
532
514
|
}
|
|
533
|
-
/**
|
|
534
|
-
* Drop patch sections for files inside the workspace directory itself.
|
|
535
|
-
*
|
|
536
|
-
* A `copy` workspace lives INSIDE the project (.harness-dispatch/workspaces/),
|
|
537
|
-
* so `git diff --no-index <project> <copy>` walks into the copy while
|
|
538
|
-
* scanning the project and reports the copy's own files as project files.
|
|
539
|
-
* Normalisation then rewrites those paths — they contain the isolated root as
|
|
540
|
-
* a substring — down to the same names as the real ones, producing a patch
|
|
541
|
-
* with two conflicting sections per file: a spurious deletion of the copy's
|
|
542
|
-
* version, and the genuine edit.
|
|
543
|
-
*
|
|
544
|
-
* Observed live: `app.js` appeared twice, once "deleted file mode" and once
|
|
545
|
-
* modified. Applying that would have deleted the file it was meant to update.
|
|
546
|
-
* It never showed up in unit tests because the fixtures put the copy outside
|
|
547
|
-
* the project, which is not where the product puts it.
|
|
548
|
-
*/
|
|
549
|
-
function dropSectionsUnder(patch, absRoot) {
|
|
550
|
-
if (!patch || !absRoot)
|
|
551
|
-
return patch;
|
|
552
|
-
const lines = patch.split("\n");
|
|
553
|
-
// Section-wise, because the leaked entries cannot be told from legitimate
|
|
554
|
-
// ones by their header alone. A file the agent ADDED and a copy-of-the-copy
|
|
555
|
-
// artefact both carry the isolated root on BOTH sides of `diff --git` — the
|
|
556
|
-
// difference is direction. The artefacts are always deletions (the file
|
|
557
|
-
// exists under the workspace while scanning the project, and has no
|
|
558
|
-
// counterpart inside the copy, which excludes its own workspace directory),
|
|
559
|
-
// and a real addition is always `--- /dev/null`. Filtering on the header
|
|
560
|
-
// alone dropped every genuine change too, and produced an empty patch.
|
|
561
|
-
const sections = [];
|
|
562
|
-
let current = [];
|
|
563
|
-
for (const line of lines) {
|
|
564
|
-
if (line.startsWith("diff --git ") && current.length > 0) {
|
|
565
|
-
sections.push(current);
|
|
566
|
-
current = [];
|
|
567
|
-
}
|
|
568
|
-
current.push(line);
|
|
569
|
-
}
|
|
570
|
-
if (current.length > 0)
|
|
571
|
-
sections.push(current);
|
|
572
|
-
const kept = sections.filter((section) => {
|
|
573
|
-
const header = section[0] ?? "";
|
|
574
|
-
if (!header.startsWith("diff --git "))
|
|
575
|
-
return true;
|
|
576
|
-
const underWorkspace = header.includes(`${absRoot}/`);
|
|
577
|
-
if (!underWorkspace)
|
|
578
|
-
return true;
|
|
579
|
-
const isDeletion = section.some((l) => l.startsWith("+++ /dev/null"));
|
|
580
|
-
return !isDeletion;
|
|
581
|
-
});
|
|
582
|
-
return kept.map((s) => s.join("\n")).join("\n");
|
|
583
|
-
}
|
|
584
|
-
/**
|
|
585
|
-
* Remove patch sections for paths the COPY never contained.
|
|
586
|
-
*
|
|
587
|
-
* copyTree skips .git, node_modules and friends, so a plain directory diff
|
|
588
|
-
* reports every one of those files as deleted — and applying that patch would
|
|
589
|
-
* delete the user's repository. The exclusion set is imported from
|
|
590
|
-
* workspaces.ts rather than restated here: two lists would drift, and the
|
|
591
|
-
* failure mode of drifting is destroying a .git directory.
|
|
592
|
-
*
|
|
593
|
-
* Only the `copy` policy needs this. A worktree diff is bounded by a real
|
|
594
|
-
* commit, so it never sees these paths at all.
|
|
595
|
-
*/
|
|
596
|
-
function dropExcludedSections(patch) {
|
|
597
|
-
if (!patch)
|
|
598
|
-
return patch;
|
|
599
|
-
const out = [];
|
|
600
|
-
let skipping = false;
|
|
601
|
-
for (const line of patch.split("\n")) {
|
|
602
|
-
if (line.startsWith("diff --git ")) {
|
|
603
|
-
const rel = /^diff --git a\/(\S+)/.exec(line)?.[1] ?? "";
|
|
604
|
-
const top = rel.split("/")[0] ?? "";
|
|
605
|
-
skipping = EXCLUDED_DIRS.has(top);
|
|
606
|
-
}
|
|
607
|
-
if (!skipping)
|
|
608
|
-
out.push(line);
|
|
609
|
-
}
|
|
610
|
-
return out.join("\n");
|
|
611
|
-
}
|
|
612
515
|
function toPosix(p) {
|
|
613
516
|
return p.replace(/\\/g, "/").replace(/\/+$/, "");
|
|
614
517
|
}
|
|
615
|
-
/**
|
|
616
|
-
* Rewrite `git diff --no-index` headers so the patch is repo-relative.
|
|
617
|
-
*
|
|
618
|
-
* --no-index emits the absolute paths it was given (`--- a/C:/long/path/...`),
|
|
619
|
-
* which applies nowhere but this machine. Rewriting them to a/<rel> and
|
|
620
|
-
* b/<rel> makes the patch portable and applicable with -p1, which is what
|
|
621
|
-
* every other git patch in the world expects.
|
|
622
|
-
*/
|
|
623
|
-
export function normaliseNoIndexPaths(patch, origRoot, isoRoot) {
|
|
624
|
-
if (!patch)
|
|
625
|
-
return patch;
|
|
626
|
-
// Longest first: when one root is a prefix of the other, stripping the
|
|
627
|
-
// shorter one first would leave a fragment of the longer behind.
|
|
628
|
-
const roots = [origRoot, isoRoot].sort((a, b) => b.length - a.length);
|
|
629
|
-
// HEADER LINES ONLY, and "header" is decided by POSITION, not by prefix.
|
|
630
|
-
//
|
|
631
|
-
// This used to run over every line in the patch, including `+` and `-`
|
|
632
|
-
// content, so a file that mentioned its own absolute path had that path
|
|
633
|
-
// deleted from its text on the way through: a delegate wrote
|
|
634
|
-
// `const dataDir = "C:/…/hd-acc/data"` and the project received
|
|
635
|
-
// `const dataDir = "data"`, reported as a clean apply. Env files, tsconfig
|
|
636
|
-
// paths, docker volumes and fixtures all routinely contain the project path.
|
|
637
|
-
//
|
|
638
|
-
// Matching on prefixes alone is not enough either: an ADDED line whose own
|
|
639
|
-
// text starts with "++ " arrives as "+++ ", and a `git diff` of a patch file
|
|
640
|
-
// is not a hypothetical in this repo. Everything from `@@` to the next
|
|
641
|
-
// section is content, full stop.
|
|
642
|
-
let inHunk = false;
|
|
643
|
-
return patch
|
|
644
|
-
.split("\n")
|
|
645
|
-
.map((line) => {
|
|
646
|
-
if (line.startsWith("diff --git "))
|
|
647
|
-
inHunk = false;
|
|
648
|
-
else if (line.startsWith("@@"))
|
|
649
|
-
inHunk = true;
|
|
650
|
-
if (inHunk)
|
|
651
|
-
return line;
|
|
652
|
-
let out = line;
|
|
653
|
-
for (const r of roots) {
|
|
654
|
-
// The a/ and b/ prefixes are rebuilt explicitly rather than left to a
|
|
655
|
-
// blanket strip, because a POSIX root already starts with "/": git
|
|
656
|
-
// emits `a//tmp/proj/app.js`, and removing "/tmp/proj/" from that
|
|
657
|
-
// leaves "aapp.js" — the prefix eaten, the patch unusable. A Windows
|
|
658
|
-
// root starts with a drive letter, so the blanket version worked
|
|
659
|
-
// there and this only failed on POSIX, in CI.
|
|
660
|
-
out = out.split(`a${r}/`).join("a/").split(`b${r}/`).join("b/");
|
|
661
|
-
out = out.split(`a/${r}/`).join("a/").split(`b/${r}/`).join("b/");
|
|
662
|
-
// Anything left over (e.g. a bare path in a "similarity index" line).
|
|
663
|
-
out = out.split(`${r}/`).join("");
|
|
664
|
-
}
|
|
665
|
-
return out;
|
|
666
|
-
})
|
|
667
|
-
.join("\n");
|
|
668
|
-
}
|
|
669
518
|
/** Build the patch, cache it next to the job, and return it (bounded). */
|
|
670
519
|
export async function workspaceDiff(jobId, jobDir, run) {
|
|
671
520
|
const patch = await buildWorkspacePatch(run);
|
|
@@ -747,6 +596,26 @@ function diffPathLists(before, after) {
|
|
|
747
596
|
const seen = new Set(before);
|
|
748
597
|
return after.filter((line) => !seen.has(line)).map((line) => line.slice(2).trim());
|
|
749
598
|
}
|
|
599
|
+
/**
|
|
600
|
+
* The "nothing left to apply" answer, given from both places that can reach it.
|
|
601
|
+
*
|
|
602
|
+
* Two call sites: the empty-patch branch, and the explicit check further down
|
|
603
|
+
* that exists because a `git_worktree` patch never empties out. They were
|
|
604
|
+
* written out separately and had to say the same thing by hand — and this
|
|
605
|
+
* message is the one a caller reads to decide whether their work landed, so
|
|
606
|
+
* the two drifting apart is exactly the confusion the second site was added
|
|
607
|
+
* to fix.
|
|
608
|
+
*/
|
|
609
|
+
function alreadyApplied(jobId, patchPath, changedCount) {
|
|
610
|
+
return {
|
|
611
|
+
jobId,
|
|
612
|
+
applied: false,
|
|
613
|
+
patchPath,
|
|
614
|
+
message: `Already applied: the project already matches the workspace for all ` +
|
|
615
|
+
`${changedCount} changed file(s), so there is nothing left to apply. ` +
|
|
616
|
+
`Use action: "discard" to clean up the workspace.`,
|
|
617
|
+
};
|
|
618
|
+
}
|
|
750
619
|
/**
|
|
751
620
|
* Apply the agent's work into the real project.
|
|
752
621
|
*
|
|
@@ -784,14 +653,7 @@ export async function applyWorkspace(jobId, jobDir, run, opts = {}) {
|
|
|
784
653
|
// reading a handful of named files.
|
|
785
654
|
const missing = await changesNotInProject(run, changed);
|
|
786
655
|
if (missing.length === 0) {
|
|
787
|
-
return
|
|
788
|
-
jobId,
|
|
789
|
-
applied: false,
|
|
790
|
-
patchPath: diff.patchPath,
|
|
791
|
-
message: `Already applied: the project already matches the workspace for all ` +
|
|
792
|
-
`${changed.length} changed file(s), so there is nothing left to apply. ` +
|
|
793
|
-
`Use action: "discard" to clean up the workspace.`,
|
|
794
|
-
};
|
|
656
|
+
return alreadyApplied(jobId, diff.patchPath, changed.length);
|
|
795
657
|
}
|
|
796
658
|
return {
|
|
797
659
|
jobId,
|
|
@@ -831,14 +693,7 @@ export async function applyWorkspace(jobId, jobDir, run, opts = {}) {
|
|
|
831
693
|
if (run.changedFiles !== undefined && run.changedFiles.length > 0) {
|
|
832
694
|
const notLanded = await changesNotInProject(run, run.changedFiles);
|
|
833
695
|
if (notLanded.length === 0) {
|
|
834
|
-
return
|
|
835
|
-
jobId,
|
|
836
|
-
applied: false,
|
|
837
|
-
patchPath: diff.patchPath,
|
|
838
|
-
message: `Already applied: the project already matches the workspace for all ` +
|
|
839
|
-
`${run.changedFiles.length} changed file(s), so there is nothing left to apply. ` +
|
|
840
|
-
`Use action: "discard" to clean up the workspace.`,
|
|
841
|
-
};
|
|
696
|
+
return alreadyApplied(jobId, diff.patchPath, run.changedFiles.length);
|
|
842
697
|
}
|
|
843
698
|
}
|
|
844
699
|
// Has the project moved under this patch? Checked BEFORE the dirty check,
|