harness-dispatch 0.5.0 → 0.6.1
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 +177 -0
- package/README.md +5 -2
- package/config.default.yaml +10 -1
- package/dist/bin.d.ts.map +1 -1
- package/dist/bin.js +3 -176
- package/dist/bin.js.map +1 -1
- package/dist/config/protocol.d.ts.map +1 -1
- package/dist/config/protocol.js +10 -2
- package/dist/config/protocol.js.map +1 -1
- package/dist/config/route-fields.d.ts +72 -0
- package/dist/config/route-fields.d.ts.map +1 -0
- package/dist/config/route-fields.js +128 -0
- package/dist/config/route-fields.js.map +1 -0
- package/dist/config/validation.js +1 -1
- package/dist/config/validation.js.map +1 -1
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +92 -173
- package/dist/config.js.map +1 -1
- package/dist/configure-yaml.d.ts +23 -0
- package/dist/configure-yaml.d.ts.map +1 -0
- package/dist/configure-yaml.js +201 -0
- package/dist/configure-yaml.js.map +1 -0
- package/dist/dispatchers/base.d.ts +3 -0
- package/dist/dispatchers/base.d.ts.map +1 -1
- package/dist/dispatchers/base.js.map +1 -1
- package/dist/dispatchers/generic-cli.d.ts.map +1 -1
- package/dist/dispatchers/generic-cli.js +22 -2
- package/dist/dispatchers/generic-cli.js.map +1 -1
- package/dist/dispatchers/openai-compatible.d.ts.map +1 -1
- package/dist/dispatchers/openai-compatible.js +18 -0
- package/dist/dispatchers/openai-compatible.js.map +1 -1
- package/dist/dispatchers/shared/stream-subprocess.d.ts +11 -0
- package/dist/dispatchers/shared/stream-subprocess.d.ts.map +1 -1
- package/dist/dispatchers/shared/stream-subprocess.js +57 -35
- package/dist/dispatchers/shared/stream-subprocess.js.map +1 -1
- package/dist/http/parse.d.ts +64 -0
- package/dist/http/parse.d.ts.map +1 -0
- package/dist/http/parse.js +230 -0
- package/dist/http/parse.js.map +1 -0
- package/dist/http/server.d.ts +2 -11
- package/dist/http/server.d.ts.map +1 -1
- package/dist/http/server.js +26 -232
- package/dist/http/server.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -2
- package/dist/index.js.map +1 -1
- package/dist/jobs/context.d.ts +17 -0
- package/dist/jobs/context.d.ts.map +1 -0
- package/dist/jobs/context.js +84 -0
- package/dist/jobs/context.js.map +1 -0
- package/dist/jobs/store.d.ts +80 -0
- package/dist/jobs/store.d.ts.map +1 -0
- package/dist/jobs/store.js +279 -0
- package/dist/jobs/store.js.map +1 -0
- package/dist/jobs/types.d.ts +135 -0
- package/dist/jobs/types.d.ts.map +1 -0
- package/dist/jobs/types.js +11 -0
- package/dist/jobs/types.js.map +1 -0
- package/dist/jobs.d.ts +113 -123
- package/dist/jobs.d.ts.map +1 -1
- package/dist/jobs.js +314 -309
- package/dist/jobs.js.map +1 -1
- package/dist/mcp/tool-schemas.d.ts +194 -0
- package/dist/mcp/tool-schemas.d.ts.map +1 -0
- package/dist/mcp/tool-schemas.js +311 -0
- package/dist/mcp/tool-schemas.js.map +1 -0
- package/dist/mcp/tools.d.ts +15 -59
- package/dist/mcp/tools.d.ts.map +1 -1
- package/dist/mcp/tools.js +63 -239
- package/dist/mcp/tools.js.map +1 -1
- package/dist/quota.d.ts +19 -1
- package/dist/quota.d.ts.map +1 -1
- package/dist/quota.js +39 -4
- package/dist/quota.js.map +1 -1
- package/dist/router.d.ts +4 -0
- package/dist/router.d.ts.map +1 -1
- package/dist/router.js +8 -0
- package/dist/router.js.map +1 -1
- package/dist/status.d.ts +13 -0
- package/dist/status.d.ts.map +1 -1
- package/dist/status.js +6 -0
- package/dist/status.js.map +1 -1
- package/dist/types.d.ts +51 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/workspace-resolve.d.ts +98 -0
- package/dist/workspace-resolve.d.ts.map +1 -0
- package/dist/workspace-resolve.js +382 -0
- package/dist/workspace-resolve.js.map +1 -0
- package/dist/workspaces.d.ts +1 -0
- package/dist/workspaces.d.ts.map +1 -1
- package/dist/workspaces.js +67 -15
- package/dist/workspaces.js.map +1 -1
- package/package.json +5 -4
- package/dist/dashboard/live.d.ts +0 -49
- package/dist/dashboard/live.d.ts.map +0 -1
- package/dist/dashboard/live.js +0 -149
- package/dist/dashboard/live.js.map +0 -1
|
@@ -0,0 +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;AA4BtC,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,CA0C5E;AAmFD;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAwB9F;AAED,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;AA4BD,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;AAED;;;;;;;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,CAiEtB;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,GAChB,OAAO,CAAC,aAAa,CAAC,CAyBxB;AAED,0DAA0D;AAC1D,wBAAsB,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAM7E"}
|
|
@@ -0,0 +1,382 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* What happens to isolated work AFTER the agent finishes.
|
|
3
|
+
*
|
|
4
|
+
* `copy` and `git_worktree` gave you a workspace path, a changed-file list and
|
|
5
|
+
* a `cleanupHint` — a string telling you to run `git worktree remove`
|
|
6
|
+
* yourself. Isolation worked and nothing was ever applied automatically, but
|
|
7
|
+
* there was no way to see the actual change, no way to keep it, and no way to
|
|
8
|
+
* clean up but by hand. Isolated dispatches were effectively write-only: you
|
|
9
|
+
* could look at a summary and then abandon the result.
|
|
10
|
+
*
|
|
11
|
+
* This module is the missing half — inspect, then keep or throw away.
|
|
12
|
+
*
|
|
13
|
+
* THE DANGEROUS PART IS `apply`, and it is dangerous in one specific way:
|
|
14
|
+
* applying a patch into a directory that has moved on since the agent started
|
|
15
|
+
* can conflict with, or silently overwrite, work the user did in the meantime.
|
|
16
|
+
* So apply refuses when the target has uncommitted changes unless the caller
|
|
17
|
+
* explicitly overrides, and it always writes the patch to disk first so there
|
|
18
|
+
* is a manual path (`git apply`) even when the automatic one declines.
|
|
19
|
+
*/
|
|
20
|
+
import { execFile as execFileCb } from "node:child_process";
|
|
21
|
+
import { existsSync } from "node:fs";
|
|
22
|
+
import { mkdir, readFile, rm, writeFile } from "node:fs/promises";
|
|
23
|
+
import path from "node:path";
|
|
24
|
+
import { promisify } from "node:util";
|
|
25
|
+
import { EXCLUDED_DIRS } from "./workspaces.js";
|
|
26
|
+
const execFile = promisify(execFileCb);
|
|
27
|
+
/** Patches are read into memory and returned over MCP, so they are bounded. */
|
|
28
|
+
export const MAX_PATCH_BYTES = 2 * 1024 * 1024;
|
|
29
|
+
/** How much of a patch is returned inline before it is truncated for display. */
|
|
30
|
+
export const MAX_PATCH_CHARS = 60_000;
|
|
31
|
+
async function git(args, cwd) {
|
|
32
|
+
const { stdout } = await execFile("git", args, {
|
|
33
|
+
cwd,
|
|
34
|
+
windowsHide: true,
|
|
35
|
+
maxBuffer: MAX_PATCH_BYTES,
|
|
36
|
+
});
|
|
37
|
+
return String(stdout);
|
|
38
|
+
}
|
|
39
|
+
/** `git diff` exits 1 when there ARE differences; that is success, not failure. */
|
|
40
|
+
async function gitDiff(args, cwd) {
|
|
41
|
+
try {
|
|
42
|
+
return await git(args, cwd);
|
|
43
|
+
}
|
|
44
|
+
catch (err) {
|
|
45
|
+
const e = err;
|
|
46
|
+
if (e.code === 1 && typeof e.stdout === "string")
|
|
47
|
+
return e.stdout;
|
|
48
|
+
throw err;
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
/** The directory the agent actually worked in, for each isolation policy. */
|
|
52
|
+
function isolatedRoot(run) {
|
|
53
|
+
if (run.policy === "git_worktree")
|
|
54
|
+
return path.join(run.workspaceRoot ?? "", "worktree");
|
|
55
|
+
return run.effectiveWorkingDir;
|
|
56
|
+
}
|
|
57
|
+
export function isResolvable(run) {
|
|
58
|
+
return run !== undefined && run.isolated && run.workspaceRoot !== undefined;
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Produce a unified patch of what the agent changed, relative to the project
|
|
62
|
+
* root, so it applies with `git apply -p1` from `originalWorkingDir`.
|
|
63
|
+
*
|
|
64
|
+
* The two policies need different bases and getting this wrong is destructive:
|
|
65
|
+
*
|
|
66
|
+
* git_worktree — diff against the COMMIT the worktree was created from.
|
|
67
|
+
* A worktree starts at HEAD, not at the caller's working tree, so diffing
|
|
68
|
+
* it against the original directory of a dirty project would report the
|
|
69
|
+
* user's own uncommitted work as deletions.
|
|
70
|
+
* copy — diff against the original directory, which is exactly what the
|
|
71
|
+
* copy was made from, so the difference is the agent's work and nothing
|
|
72
|
+
* else.
|
|
73
|
+
*/
|
|
74
|
+
export async function buildWorkspacePatch(run) {
|
|
75
|
+
const root = isolatedRoot(run);
|
|
76
|
+
if (!existsSync(root)) {
|
|
77
|
+
throw new Error(`The isolated workspace for this job is gone (${root}). Workspaces are pruned ` +
|
|
78
|
+
`once they age out, so inspect and resolve a job before that happens.`);
|
|
79
|
+
}
|
|
80
|
+
if (run.policy === "git_worktree") {
|
|
81
|
+
if (!run.baseCommit) {
|
|
82
|
+
throw new Error("This worktree job predates base-commit recording, so a safe patch cannot be " +
|
|
83
|
+
"produced — diffing it against a dirty project could report your own " +
|
|
84
|
+
"uncommitted work as deletions. Inspect it by hand at " +
|
|
85
|
+
`${root}, or re-run the dispatch.`);
|
|
86
|
+
}
|
|
87
|
+
// `add -A -N` registers untracked files as intent-to-add so they appear in
|
|
88
|
+
// the diff as additions. It touches only the throwaway worktree's index.
|
|
89
|
+
await git(["add", "-A", "-N"], root).catch(() => undefined);
|
|
90
|
+
return gitDiff(["diff", "--binary", run.baseCommit, "--"], root);
|
|
91
|
+
}
|
|
92
|
+
// --no-index works outside a repository and handles added/deleted files.
|
|
93
|
+
//
|
|
94
|
+
// The paths are handed to git in POSIX form deliberately. Given a Windows
|
|
95
|
+
// path, git quotes the whole filename and escapes the separators as `\\`,
|
|
96
|
+
// so the emitted header reads `"a/C:\\Users\\..."` — and any attempt to
|
|
97
|
+
// normalise that afterwards has to understand C-string escaping. Passing
|
|
98
|
+
// forward slashes means git emits a plain unquoted path that simple prefix
|
|
99
|
+
// stripping can handle.
|
|
100
|
+
const origPosix = toPosix(run.originalWorkingDir);
|
|
101
|
+
const isoPosix = toPosix(root);
|
|
102
|
+
const raw = await gitDiff(["diff", "--no-index", "--binary", "--", origPosix, isoPosix], path.dirname(run.originalWorkingDir));
|
|
103
|
+
// Order matters: the workspace itself is filtered out on ABSOLUTE paths,
|
|
104
|
+
// before normalisation collapses them.
|
|
105
|
+
const withoutWorkspace = dropSectionsUnder(raw, toPosix(run.workspaceRoot ?? ""));
|
|
106
|
+
return dropExcludedSections(normaliseNoIndexPaths(withoutWorkspace, origPosix, isoPosix));
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* Drop patch sections for files inside the workspace directory itself.
|
|
110
|
+
*
|
|
111
|
+
* A `copy` workspace lives INSIDE the project (.harness-dispatch/workspaces/),
|
|
112
|
+
* so `git diff --no-index <project> <copy>` walks into the copy while
|
|
113
|
+
* scanning the project and reports the copy's own files as project files.
|
|
114
|
+
* Normalisation then rewrites those paths — they contain the isolated root as
|
|
115
|
+
* a substring — down to the same names as the real ones, producing a patch
|
|
116
|
+
* with two conflicting sections per file: a spurious deletion of the copy's
|
|
117
|
+
* version, and the genuine edit.
|
|
118
|
+
*
|
|
119
|
+
* Observed live: `app.js` appeared twice, once "deleted file mode" and once
|
|
120
|
+
* modified. Applying that would have deleted the file it was meant to update.
|
|
121
|
+
* It never showed up in unit tests because the fixtures put the copy outside
|
|
122
|
+
* the project, which is not where the product puts it.
|
|
123
|
+
*/
|
|
124
|
+
function dropSectionsUnder(patch, absRoot) {
|
|
125
|
+
if (!patch || !absRoot)
|
|
126
|
+
return patch;
|
|
127
|
+
const lines = patch.split("\n");
|
|
128
|
+
// Section-wise, because the leaked entries cannot be told from legitimate
|
|
129
|
+
// ones by their header alone. A file the agent ADDED and a copy-of-the-copy
|
|
130
|
+
// artefact both carry the isolated root on BOTH sides of `diff --git` — the
|
|
131
|
+
// difference is direction. The artefacts are always deletions (the file
|
|
132
|
+
// exists under the workspace while scanning the project, and has no
|
|
133
|
+
// counterpart inside the copy, which excludes its own workspace directory),
|
|
134
|
+
// and a real addition is always `--- /dev/null`. Filtering on the header
|
|
135
|
+
// alone dropped every genuine change too, and produced an empty patch.
|
|
136
|
+
const sections = [];
|
|
137
|
+
let current = [];
|
|
138
|
+
for (const line of lines) {
|
|
139
|
+
if (line.startsWith("diff --git ") && current.length > 0) {
|
|
140
|
+
sections.push(current);
|
|
141
|
+
current = [];
|
|
142
|
+
}
|
|
143
|
+
current.push(line);
|
|
144
|
+
}
|
|
145
|
+
if (current.length > 0)
|
|
146
|
+
sections.push(current);
|
|
147
|
+
const kept = sections.filter((section) => {
|
|
148
|
+
const header = section[0] ?? "";
|
|
149
|
+
if (!header.startsWith("diff --git "))
|
|
150
|
+
return true;
|
|
151
|
+
const underWorkspace = header.includes(`${absRoot}/`);
|
|
152
|
+
if (!underWorkspace)
|
|
153
|
+
return true;
|
|
154
|
+
const isDeletion = section.some((l) => l.startsWith("+++ /dev/null"));
|
|
155
|
+
return !isDeletion;
|
|
156
|
+
});
|
|
157
|
+
return kept.map((s) => s.join("\n")).join("\n");
|
|
158
|
+
}
|
|
159
|
+
/**
|
|
160
|
+
* Remove patch sections for paths the COPY never contained.
|
|
161
|
+
*
|
|
162
|
+
* copyTree skips .git, node_modules and friends, so a plain directory diff
|
|
163
|
+
* reports every one of those files as deleted — and applying that patch would
|
|
164
|
+
* delete the user's repository. The exclusion set is imported from
|
|
165
|
+
* workspaces.ts rather than restated here: two lists would drift, and the
|
|
166
|
+
* failure mode of drifting is destroying a .git directory.
|
|
167
|
+
*
|
|
168
|
+
* Only the `copy` policy needs this. A worktree diff is bounded by a real
|
|
169
|
+
* commit, so it never sees these paths at all.
|
|
170
|
+
*/
|
|
171
|
+
function dropExcludedSections(patch) {
|
|
172
|
+
if (!patch)
|
|
173
|
+
return patch;
|
|
174
|
+
const out = [];
|
|
175
|
+
let skipping = false;
|
|
176
|
+
for (const line of patch.split("\n")) {
|
|
177
|
+
if (line.startsWith("diff --git ")) {
|
|
178
|
+
const rel = /^diff --git a\/(\S+)/.exec(line)?.[1] ?? "";
|
|
179
|
+
const top = rel.split("/")[0] ?? "";
|
|
180
|
+
skipping = EXCLUDED_DIRS.has(top);
|
|
181
|
+
}
|
|
182
|
+
if (!skipping)
|
|
183
|
+
out.push(line);
|
|
184
|
+
}
|
|
185
|
+
return out.join("\n");
|
|
186
|
+
}
|
|
187
|
+
function toPosix(p) {
|
|
188
|
+
return p.replace(/\\/g, "/").replace(/\/+$/, "");
|
|
189
|
+
}
|
|
190
|
+
/**
|
|
191
|
+
* Rewrite `git diff --no-index` headers so the patch is repo-relative.
|
|
192
|
+
*
|
|
193
|
+
* --no-index emits the absolute paths it was given (`--- a/C:/long/path/...`),
|
|
194
|
+
* which applies nowhere but this machine. Rewriting them to a/<rel> and
|
|
195
|
+
* b/<rel> makes the patch portable and applicable with -p1, which is what
|
|
196
|
+
* every other git patch in the world expects.
|
|
197
|
+
*/
|
|
198
|
+
export function normaliseNoIndexPaths(patch, origRoot, isoRoot) {
|
|
199
|
+
if (!patch)
|
|
200
|
+
return patch;
|
|
201
|
+
// Longest first: when one root is a prefix of the other, stripping the
|
|
202
|
+
// shorter one first would leave a fragment of the longer behind.
|
|
203
|
+
const roots = [origRoot, isoRoot].sort((a, b) => b.length - a.length);
|
|
204
|
+
return patch
|
|
205
|
+
.split("\n")
|
|
206
|
+
.map((line) => {
|
|
207
|
+
let out = line;
|
|
208
|
+
for (const r of roots) {
|
|
209
|
+
// The a/ and b/ prefixes are rebuilt explicitly rather than left to a
|
|
210
|
+
// blanket strip, because a POSIX root already starts with "/": git
|
|
211
|
+
// emits `a//tmp/proj/app.js`, and removing "/tmp/proj/" from that
|
|
212
|
+
// leaves "aapp.js" — the prefix eaten, the patch unusable. A Windows
|
|
213
|
+
// root starts with a drive letter, so the blanket version worked
|
|
214
|
+
// there and this only failed on POSIX, in CI.
|
|
215
|
+
out = out.split(`a${r}/`).join("a/").split(`b${r}/`).join("b/");
|
|
216
|
+
out = out.split(`a/${r}/`).join("a/").split(`b/${r}/`).join("b/");
|
|
217
|
+
// Anything left over (e.g. a bare path in a "similarity index" line).
|
|
218
|
+
out = out.split(`${r}/`).join("");
|
|
219
|
+
}
|
|
220
|
+
return out;
|
|
221
|
+
})
|
|
222
|
+
.join("\n");
|
|
223
|
+
}
|
|
224
|
+
/** Build the patch, cache it next to the job, and return it (bounded). */
|
|
225
|
+
export async function workspaceDiff(jobId, jobDir, run) {
|
|
226
|
+
const patch = await buildWorkspacePatch(run);
|
|
227
|
+
const patchPath = path.join(jobDir, "output", "workspace.patch");
|
|
228
|
+
await mkdir(path.dirname(patchPath), { recursive: true });
|
|
229
|
+
await writeFile(patchPath, patch, { encoding: "utf8", mode: 0o600 });
|
|
230
|
+
const truncated = patch.length > MAX_PATCH_CHARS;
|
|
231
|
+
return {
|
|
232
|
+
jobId,
|
|
233
|
+
policy: run.policy,
|
|
234
|
+
patchPath,
|
|
235
|
+
bytes: Buffer.byteLength(patch, "utf8"),
|
|
236
|
+
patch: truncated
|
|
237
|
+
? `${patch.slice(0, MAX_PATCH_CHARS)}\n[... truncated, full patch at ${patchPath}]`
|
|
238
|
+
: patch,
|
|
239
|
+
truncated,
|
|
240
|
+
...(run.changedFiles !== undefined ? { changedFiles: run.changedFiles } : {}),
|
|
241
|
+
};
|
|
242
|
+
}
|
|
243
|
+
/**
|
|
244
|
+
* Uncommitted changes in the target, or undefined when it is not a repo.
|
|
245
|
+
*
|
|
246
|
+
* The tool's OWN directory is not the user's work. A `copy` workspace is
|
|
247
|
+
* created at <project>/.harness-dispatch/workspaces/..., so its mere existence
|
|
248
|
+
* made `git status` non-empty and apply refused every single time with "1
|
|
249
|
+
* uncommitted change" — the feature blocking itself with its own scratch
|
|
250
|
+
* space. Only real changes count toward the dirty check.
|
|
251
|
+
*/
|
|
252
|
+
async function dirtyPaths(dir) {
|
|
253
|
+
try {
|
|
254
|
+
const out = await git(["status", "--porcelain"], dir);
|
|
255
|
+
return out
|
|
256
|
+
.split("\n")
|
|
257
|
+
.map((l) => l.trim())
|
|
258
|
+
.filter(Boolean)
|
|
259
|
+
.filter((line) => {
|
|
260
|
+
// Porcelain lines are "XY path"; the path may be quoted.
|
|
261
|
+
const p = line.slice(2).trim().replace(/^"|"$/g, "").replace(/\\/g, "/");
|
|
262
|
+
return !(p === ".harness-dispatch" || p.startsWith(".harness-dispatch/"));
|
|
263
|
+
});
|
|
264
|
+
}
|
|
265
|
+
catch {
|
|
266
|
+
return undefined;
|
|
267
|
+
}
|
|
268
|
+
}
|
|
269
|
+
/**
|
|
270
|
+
* Apply the agent's work into the real project.
|
|
271
|
+
*
|
|
272
|
+
* Refuses by default when the target has uncommitted changes: the patch was
|
|
273
|
+
* built against a specific base, and applying it over work done since can
|
|
274
|
+
* conflict or clobber. `force` overrides, and the patch file is written
|
|
275
|
+
* either way so `git apply` by hand is always available.
|
|
276
|
+
*/
|
|
277
|
+
export async function applyWorkspace(jobId, jobDir, run, opts = {}) {
|
|
278
|
+
const diff = await workspaceDiff(jobId, jobDir, run);
|
|
279
|
+
if (diff.bytes === 0) {
|
|
280
|
+
return {
|
|
281
|
+
jobId,
|
|
282
|
+
applied: false,
|
|
283
|
+
patchPath: diff.patchPath,
|
|
284
|
+
message: "The agent changed nothing, so there is nothing to apply.",
|
|
285
|
+
};
|
|
286
|
+
}
|
|
287
|
+
const target = run.originalWorkingDir;
|
|
288
|
+
const dirty = await dirtyPaths(target);
|
|
289
|
+
if (dirty !== undefined && dirty.length > 0 && opts.force !== true) {
|
|
290
|
+
return {
|
|
291
|
+
jobId,
|
|
292
|
+
applied: false,
|
|
293
|
+
patchPath: diff.patchPath,
|
|
294
|
+
message: `Refused: ${target} has ${dirty.length} uncommitted change(s), and this patch was ` +
|
|
295
|
+
`built against a clean base — applying it could conflict with or overwrite work ` +
|
|
296
|
+
`done since the dispatch started. Commit or stash first, re-run with force: true ` +
|
|
297
|
+
`to apply anyway, or apply by hand: git apply "${diff.patchPath}"`,
|
|
298
|
+
};
|
|
299
|
+
}
|
|
300
|
+
// --3way first: it merges when context has moved instead of failing
|
|
301
|
+
// outright. It needs the pre-image blobs to exist in the target repo, which
|
|
302
|
+
// holds for a worktree patch (same repo, real commit) but NOT for a copy
|
|
303
|
+
// patch — `git diff --no-index` writes index lines for blobs the repo has
|
|
304
|
+
// never seen, so --3way fails with "could not build fake ancestor". Plain
|
|
305
|
+
// apply handles that fine, so the strict-but-smarter mode is an attempt,
|
|
306
|
+
// not a requirement.
|
|
307
|
+
let applyError;
|
|
308
|
+
for (const args of [
|
|
309
|
+
["apply", "--3way", "--whitespace=nowarn", diff.patchPath],
|
|
310
|
+
["apply", "--whitespace=nowarn", diff.patchPath],
|
|
311
|
+
]) {
|
|
312
|
+
try {
|
|
313
|
+
await git(args, target);
|
|
314
|
+
applyError = undefined;
|
|
315
|
+
break;
|
|
316
|
+
}
|
|
317
|
+
catch (err) {
|
|
318
|
+
applyError = err instanceof Error ? err.message : String(err);
|
|
319
|
+
}
|
|
320
|
+
}
|
|
321
|
+
if (applyError !== undefined) {
|
|
322
|
+
const firstLine = applyError.split("\n").find((l) => l.includes("error:")) ?? applyError.split("\n")[0];
|
|
323
|
+
return {
|
|
324
|
+
jobId,
|
|
325
|
+
applied: false,
|
|
326
|
+
patchPath: diff.patchPath,
|
|
327
|
+
message: `git apply failed: ${firstLine}. The patch is intact at ` +
|
|
328
|
+
`${diff.patchPath} — resolve by hand, or inspect the workspace directly.`,
|
|
329
|
+
};
|
|
330
|
+
}
|
|
331
|
+
return {
|
|
332
|
+
jobId,
|
|
333
|
+
applied: true,
|
|
334
|
+
patchPath: diff.patchPath,
|
|
335
|
+
message: `Applied ${diff.bytes} bytes of changes to ${target}. Review with git diff before committing.`,
|
|
336
|
+
...(run.changedFiles !== undefined ? { changedFiles: run.changedFiles } : {}),
|
|
337
|
+
};
|
|
338
|
+
}
|
|
339
|
+
/**
|
|
340
|
+
* Throw the isolated workspace away.
|
|
341
|
+
*
|
|
342
|
+
* A git worktree is not just a directory: `rm -rf` on it leaves the parent
|
|
343
|
+
* repository's worktree metadata behind, and git then complains about a
|
|
344
|
+
* missing worktree until someone runs `git worktree prune`. So worktrees are
|
|
345
|
+
* removed through git, with a filesystem sweep afterwards for the wrapper
|
|
346
|
+
* directory git does not own.
|
|
347
|
+
*/
|
|
348
|
+
export async function discardWorkspace(jobId, run) {
|
|
349
|
+
const root = run.workspaceRoot;
|
|
350
|
+
if (!root) {
|
|
351
|
+
return { jobId, discarded: false, message: "This job has no isolated workspace to discard." };
|
|
352
|
+
}
|
|
353
|
+
if (!existsSync(root)) {
|
|
354
|
+
return { jobId, discarded: true, message: `Already gone: ${root}` };
|
|
355
|
+
}
|
|
356
|
+
if (run.policy === "git_worktree") {
|
|
357
|
+
const worktree = path.join(root, "worktree");
|
|
358
|
+
try {
|
|
359
|
+
await git(["worktree", "remove", "--force", worktree], run.originalWorkingDir);
|
|
360
|
+
}
|
|
361
|
+
catch {
|
|
362
|
+
// Fall through to the filesystem sweep; prune fixes the metadata.
|
|
363
|
+
await git(["worktree", "prune"], run.originalWorkingDir).catch(() => undefined);
|
|
364
|
+
}
|
|
365
|
+
}
|
|
366
|
+
await rm(root, { recursive: true, force: true });
|
|
367
|
+
return {
|
|
368
|
+
jobId,
|
|
369
|
+
discarded: true,
|
|
370
|
+
message: `Discarded the isolated workspace at ${root}. The original project was never modified.`,
|
|
371
|
+
};
|
|
372
|
+
}
|
|
373
|
+
/** Read a previously written patch, if one was cached. */
|
|
374
|
+
export async function cachedPatch(jobDir) {
|
|
375
|
+
try {
|
|
376
|
+
return await readFile(path.join(jobDir, "output", "workspace.patch"), "utf8");
|
|
377
|
+
}
|
|
378
|
+
catch {
|
|
379
|
+
return undefined;
|
|
380
|
+
}
|
|
381
|
+
}
|
|
382
|
+
//# sourceMappingURL=workspace-resolve.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workspace-resolve.js","sourceRoot":"","sources":["../src/workspace-resolve.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAC5D,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAClE,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAGtC,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEhD,MAAM,QAAQ,GAAG,SAAS,CAAC,UAAU,CAAC,CAAC;AAEvC,+EAA+E;AAC/E,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC;AAE/C,iFAAiF;AACjF,MAAM,CAAC,MAAM,eAAe,GAAG,MAAM,CAAC;AAEtC,KAAK,UAAU,GAAG,CAAC,IAAc,EAAE,GAAW;IAC5C,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,QAAQ,CAAC,KAAK,EAAE,IAAI,EAAE;QAC7C,GAAG;QACH,WAAW,EAAE,IAAI;QACjB,SAAS,EAAE,eAAe;KAC3B,CAAC,CAAC;IACH,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC;AACxB,CAAC;AAED,mFAAmF;AACnF,KAAK,UAAU,OAAO,CAAC,IAAc,EAAE,GAAW;IAChD,IAAI,CAAC;QACH,OAAO,MAAM,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IAC9B,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,CAAC,GAAG,GAAyC,CAAC;QACpD,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,IAAI,OAAO,CAAC,CAAC,MAAM,KAAK,QAAQ;YAAE,OAAO,CAAC,CAAC,MAAM,CAAC;QAClE,MAAM,GAAG,CAAC;IACZ,CAAC;AACH,CAAC;AAED,6EAA6E;AAC7E,SAAS,YAAY,CAAC,GAAiB;IACrC,IAAI,GAAG,CAAC,MAAM,KAAK,cAAc;QAAE,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,aAAa,IAAI,EAAE,EAAE,UAAU,CAAC,CAAC;IACzF,OAAO,GAAG,CAAC,mBAAmB,CAAC;AACjC,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,GAA6B;IACxD,OAAO,GAAG,KAAK,SAAS,IAAI,GAAG,CAAC,QAAQ,IAAI,GAAG,CAAC,aAAa,KAAK,SAAS,CAAC;AAC9E,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,GAAiB;IACzD,MAAM,IAAI,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC;IAC/B,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;QACtB,MAAM,IAAI,KAAK,CACb,gDAAgD,IAAI,2BAA2B;YAC7E,sEAAsE,CACzE,CAAC;IACJ,CAAC;IAED,IAAI,GAAG,CAAC,MAAM,KAAK,cAAc,EAAE,CAAC;QAClC,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC;YACpB,MAAM,IAAI,KAAK,CACb,8EAA8E;gBAC5E,sEAAsE;gBACtE,uDAAuD;gBACvD,GAAG,IAAI,2BAA2B,CACrC,CAAC;QACJ,CAAC;QACD,2EAA2E;QAC3E,yEAAyE;QACzE,MAAM,GAAG,CAAC,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;QAC5D,OAAO,OAAO,CAAC,CAAC,MAAM,EAAE,UAAU,EAAE,GAAG,CAAC,UAAU,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC;IACnE,CAAC;IAED,yEAAyE;IACzE,EAAE;IACF,0EAA0E;IAC1E,0EAA0E;IAC1E,wEAAwE;IACxE,yEAAyE;IACzE,2EAA2E;IAC3E,wBAAwB;IACxB,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;IAClD,MAAM,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/B,MAAM,GAAG,GAAG,MAAM,OAAO,CACvB,CAAC,MAAM,EAAE,YAAY,EAAE,UAAU,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,CAAC,EAC7D,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,CACrC,CAAC;IACF,yEAAyE;IACzE,uCAAuC;IACvC,MAAM,gBAAgB,GAAG,iBAAiB,CAAC,GAAG,EAAE,OAAO,CAAC,GAAG,CAAC,aAAa,IAAI,EAAE,CAAC,CAAC,CAAC;IAClF,OAAO,oBAAoB,CAAC,qBAAqB,CAAC,gBAAgB,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC,CAAC;AAC5F,CAAC;AAED;;;;;;;;;;;;;;;GAeG;AACH,SAAS,iBAAiB,CAAC,KAAa,EAAE,OAAe;IACvD,IAAI,CAAC,KAAK,IAAI,CAAC,OAAO;QAAE,OAAO,KAAK,CAAC;IACrC,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAEhC,0EAA0E;IAC1E,4EAA4E;IAC5E,4EAA4E;IAC5E,wEAAwE;IACxE,oEAAoE;IACpE,4EAA4E;IAC5E,yEAAyE;IACzE,uEAAuE;IACvE,MAAM,QAAQ,GAAe,EAAE,CAAC;IAChC,IAAI,OAAO,GAAa,EAAE,CAAC;IAC3B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACzD,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACvB,OAAO,GAAG,EAAE,CAAC;QACf,CAAC;QACD,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACrB,CAAC;IACD,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC;QAAE,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAE/C,MAAM,IAAI,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE;QACvC,MAAM,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QAChC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,aAAa,CAAC;YAAE,OAAO,IAAI,CAAC;QACnD,MAAM,cAAc,GAAG,MAAM,CAAC,QAAQ,CAAC,GAAG,OAAO,GAAG,CAAC,CAAC;QACtD,IAAI,CAAC,cAAc;YAAE,OAAO,IAAI,CAAC;QACjC,MAAM,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC,CAAC;QACtE,OAAO,CAAC,UAAU,CAAC;IACrB,CAAC,CAAC,CAAC;IACH,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAClD,CAAC;AAED;;;;;;;;;;;GAWG;AACH,SAAS,oBAAoB,CAAC,KAAa;IACzC,IAAI,CAAC,KAAK;QAAE,OAAO,KAAK,CAAC;IACzB,MAAM,GAAG,GAAa,EAAE,CAAC;IACzB,IAAI,QAAQ,GAAG,KAAK,CAAC;IACrB,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;QACrC,IAAI,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;YACnC,MAAM,GAAG,GAAG,sBAAsB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;YACzD,MAAM,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;YACpC,QAAQ,GAAG,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACpC,CAAC;QACD,IAAI,CAAC,QAAQ;YAAE,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAChC,CAAC;IACD,OAAO,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACxB,CAAC;AAED,SAAS,OAAO,CAAC,CAAS;IACxB,OAAO,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;AACnD,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,qBAAqB,CAAC,KAAa,EAAE,QAAgB,EAAE,OAAe;IACpF,IAAI,CAAC,KAAK;QAAE,OAAO,KAAK,CAAC;IACzB,uEAAuE;IACvE,iEAAiE;IACjE,MAAM,KAAK,GAAG,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC;IACtE,OAAO,KAAK;SACT,KAAK,CAAC,IAAI,CAAC;SACX,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;QACZ,IAAI,GAAG,GAAG,IAAI,CAAC;QACf,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;YACtB,sEAAsE;YACtE,mEAAmE;YACnE,kEAAkE;YAClE,qEAAqE;YACrE,iEAAiE;YACjE,8CAA8C;YAC9C,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAChE,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAClE,sEAAsE;YACtE,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACpC,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC,CAAC;SACD,IAAI,CAAC,IAAI,CAAC,CAAC;AAChB,CAAC;AAcD,0EAA0E;AAC1E,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,KAAa,EACb,MAAc,EACd,GAAiB;IAEjB,MAAM,KAAK,GAAG,MAAM,mBAAmB,CAAC,GAAG,CAAC,CAAC;IAC7C,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,QAAQ,EAAE,iBAAiB,CAAC,CAAC;IACjE,MAAM,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC1D,MAAM,SAAS,CAAC,SAAS,EAAE,KAAK,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IACrE,MAAM,SAAS,GAAG,KAAK,CAAC,MAAM,GAAG,eAAe,CAAC;IACjD,OAAO;QACL,KAAK;QACL,MAAM,EAAE,GAAG,CAAC,MAAM;QAClB,SAAS;QACT,KAAK,EAAE,MAAM,CAAC,UAAU,CAAC,KAAK,EAAE,MAAM,CAAC;QACvC,KAAK,EAAE,SAAS;YACd,CAAC,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,eAAe,CAAC,mCAAmC,SAAS,GAAG;YACnF,CAAC,CAAC,KAAK;QACT,SAAS;QACT,GAAG,CAAC,GAAG,CAAC,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,GAAG,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC9E,CAAC;AACJ,CAAC;AAED;;;;;;;;GAQG;AACH,KAAK,UAAU,UAAU,CAAC,GAAW;IACnC,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,GAAG,CAAC,CAAC,QAAQ,EAAE,aAAa,CAAC,EAAE,GAAG,CAAC,CAAC;QACtD,OAAO,GAAG;aACP,KAAK,CAAC,IAAI,CAAC;aACX,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;aACpB,MAAM,CAAC,OAAO,CAAC;aACf,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE;YACf,yDAAyD;YACzD,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;YACzE,OAAO,CAAC,CAAC,CAAC,KAAK,mBAAmB,IAAI,CAAC,CAAC,UAAU,CAAC,oBAAoB,CAAC,CAAC,CAAC;QAC5E,CAAC,CAAC,CAAC;IACP,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC;AAUD;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,KAAa,EACb,MAAc,EACd,GAAiB,EACjB,OAA4B,EAAE;IAE9B,MAAM,IAAI,GAAG,MAAM,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC;IACrD,IAAI,IAAI,CAAC,KAAK,KAAK,CAAC,EAAE,CAAC;QACrB,OAAO;YACL,KAAK;YACL,OAAO,EAAE,KAAK;YACd,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,OAAO,EAAE,0DAA0D;SACpE,CAAC;IACJ,CAAC;IAED,MAAM,MAAM,GAAG,GAAG,CAAC,kBAAkB,CAAC;IACtC,MAAM,KAAK,GAAG,MAAM,UAAU,CAAC,MAAM,CAAC,CAAC;IACvC,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,KAAK,KAAK,IAAI,EAAE,CAAC;QACnE,OAAO;YACL,KAAK;YACL,OAAO,EAAE,KAAK;YACd,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,OAAO,EACL,YAAY,MAAM,QAAQ,KAAK,CAAC,MAAM,6CAA6C;gBACnF,iFAAiF;gBACjF,kFAAkF;gBAClF,iDAAiD,IAAI,CAAC,SAAS,GAAG;SACrE,CAAC;IACJ,CAAC;IAED,oEAAoE;IACpE,4EAA4E;IAC5E,yEAAyE;IACzE,0EAA0E;IAC1E,0EAA0E;IAC1E,yEAAyE;IACzE,qBAAqB;IACrB,IAAI,UAA8B,CAAC;IACnC,KAAK,MAAM,IAAI,IAAI;QACjB,CAAC,OAAO,EAAE,QAAQ,EAAE,qBAAqB,EAAE,IAAI,CAAC,SAAS,CAAC;QAC1D,CAAC,OAAO,EAAE,qBAAqB,EAAE,IAAI,CAAC,SAAS,CAAC;KACjD,EAAE,CAAC;QACF,IAAI,CAAC;YACH,MAAM,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;YACxB,UAAU,GAAG,SAAS,CAAC;YACvB,MAAM;QACR,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,UAAU,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAChE,CAAC;IACH,CAAC;IACD,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;QAC7B,MAAM,SAAS,GAAG,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,IAAI,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QACxG,OAAO;YACL,KAAK;YACL,OAAO,EAAE,KAAK;YACd,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,OAAO,EACL,qBAAqB,SAAS,2BAA2B;gBACzD,GAAG,IAAI,CAAC,SAAS,wDAAwD;SAC5E,CAAC;IACJ,CAAC;IAED,OAAO;QACL,KAAK;QACL,OAAO,EAAE,IAAI;QACb,SAAS,EAAE,IAAI,CAAC,SAAS;QACzB,OAAO,EAAE,WAAW,IAAI,CAAC,KAAK,wBAAwB,MAAM,2CAA2C;QACvG,GAAG,CAAC,GAAG,CAAC,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,GAAG,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC9E,CAAC;AACJ,CAAC;AAQD;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,KAAa,EACb,GAAiB;IAEjB,MAAM,IAAI,GAAG,GAAG,CAAC,aAAa,CAAC;IAC/B,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,gDAAgD,EAAE,CAAC;IAChG,CAAC;IACD,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;QACtB,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE,iBAAiB,IAAI,EAAE,EAAE,CAAC;IACtE,CAAC;IAED,IAAI,GAAG,CAAC,MAAM,KAAK,cAAc,EAAE,CAAC;QAClC,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;QAC7C,IAAI,CAAC;YACH,MAAM,GAAG,CAAC,CAAC,UAAU,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,CAAC,EAAE,GAAG,CAAC,kBAAkB,CAAC,CAAC;QACjF,CAAC;QAAC,MAAM,CAAC;YACP,kEAAkE;YAClE,MAAM,GAAG,CAAC,CAAC,UAAU,EAAE,OAAO,CAAC,EAAE,GAAG,CAAC,kBAAkB,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;QAClF,CAAC;IACH,CAAC;IAED,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IACjD,OAAO;QACL,KAAK;QACL,SAAS,EAAE,IAAI;QACf,OAAO,EAAE,uCAAuC,IAAI,4CAA4C;KACjG,CAAC;AACJ,CAAC;AAED,0DAA0D;AAC1D,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,MAAc;IAC9C,IAAI,CAAC;QACH,OAAO,MAAM,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,QAAQ,EAAE,iBAAiB,CAAC,EAAE,MAAM,CAAC,CAAC;IAChF,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC"}
|
package/dist/workspaces.d.ts
CHANGED
package/dist/workspaces.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workspaces.d.ts","sourceRoot":"","sources":["../src/workspaces.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"workspaces.d.ts","sourceRoot":"","sources":["../src/workspaces.ts"],"names":[],"mappings":"AAiBA,OAAO,KAAK,EACV,cAAc,EACd,aAAa,EACb,aAAa,EAEb,eAAe,EAEhB,MAAM,YAAY,CAAC;AAIpB,eAAO,MAAM,aAAa,aAcxB,CAAC;AASH,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,eAAe,CAAC;IACxB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,mBAAmB,EAAE,MAAM,CAAC;IAC5B,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,QAAQ,EAAE,OAAO,CAAC;IAClB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,MAAM,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC;CACzD;AAED,wBAAgB,kBAAkB,CAChC,GAAG,EAAE,aAAa,EAClB,aAAa,EAAE,aAAa,GAAG,SAAS,EACxC,eAAe,CAAC,EAAE,eAAe,GAChC,eAAe,CAIjB;AAED,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAE1E;AAkSD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,kBAAkB,EAAE,MAAM,GAAG,MAAM,EAAE,CAUlF;AA6KD,wBAAsB,gBAAgB,CAAC,IAAI,EAAE;IAC3C,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,eAAe,CAAC;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAU7B"}
|
package/dist/workspaces.js
CHANGED
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
import { execFile as execFileCb } from "node:child_process";
|
|
2
2
|
import { createHash, randomUUID } from "node:crypto";
|
|
3
|
+
import { constants as fsConstants } from "node:fs";
|
|
3
4
|
import { copyFile, mkdir, readdir, readFile, readlink, rm, stat, symlink, } from "node:fs/promises";
|
|
4
5
|
import os from "node:os";
|
|
5
6
|
import path from "node:path";
|
|
6
7
|
import { promisify } from "node:util";
|
|
7
8
|
const execFile = promisify(execFileCb);
|
|
8
|
-
const EXCLUDED_DIRS = new Set([
|
|
9
|
+
export const EXCLUDED_DIRS = new Set([
|
|
9
10
|
".git",
|
|
10
11
|
"node_modules",
|
|
11
12
|
"dist",
|
|
@@ -182,25 +183,56 @@ async function copyLink(sourceRoot, destRoot, childRel, skipped) {
|
|
|
182
183
|
// missing in-tree link is a far smaller problem than an escaping one.
|
|
183
184
|
}
|
|
184
185
|
}
|
|
185
|
-
async function copyTree(sourceRoot, destRoot, rel = "", skipped = []) {
|
|
186
|
+
async function copyTree(sourceRoot, destRoot, rel = "", skipped = [], vanished = []) {
|
|
186
187
|
const sourceDir = rel ? path.join(sourceRoot, rel) : sourceRoot;
|
|
187
188
|
const destDir = rel ? path.join(destRoot, rel) : destRoot;
|
|
188
189
|
await mkdir(destDir, { recursive: true });
|
|
189
190
|
const entries = await readdir(sourceDir, { withFileTypes: true });
|
|
190
191
|
for (const entry of entries) {
|
|
191
192
|
const childRel = rel ? path.join(rel, entry.name) : entry.name;
|
|
192
|
-
|
|
193
|
-
if (
|
|
193
|
+
try {
|
|
194
|
+
if (entry.isDirectory()) {
|
|
195
|
+
if (shouldExclude(childRel, entry.name))
|
|
196
|
+
continue;
|
|
197
|
+
await copyTree(sourceRoot, destRoot, childRel, skipped, vanished);
|
|
194
198
|
continue;
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
199
|
+
}
|
|
200
|
+
if (entry.isFile()) {
|
|
201
|
+
// COPYFILE_FICLONE asks the filesystem for a copy-on-write reflink:
|
|
202
|
+
// the new file shares the original's blocks until one of them is
|
|
203
|
+
// written to. On APFS, Btrfs/XFS and ReFS/Dev Drive that makes a
|
|
204
|
+
// workspace clone near-instant and free of duplicate allocation,
|
|
205
|
+
// which matters because `copy` duplicates a whole project per
|
|
206
|
+
// dispatch and fanout does it per arm.
|
|
207
|
+
//
|
|
208
|
+
// FICLONE, deliberately NOT FICLONE_FORCE: the plain flag falls back
|
|
209
|
+
// to an ordinary copy when the filesystem cannot reflink (plain NTFS,
|
|
210
|
+
// ext4, or a cross-device copy), while FORCE fails outright. A
|
|
211
|
+
// best-effort speedup must never turn a working copy into an error.
|
|
212
|
+
await copyFile(path.join(sourceRoot, childRel), path.join(destRoot, childRel), fsConstants.COPYFILE_FICLONE);
|
|
213
|
+
continue;
|
|
214
|
+
}
|
|
215
|
+
if (entry.isSymbolicLink()) {
|
|
216
|
+
await copyLink(sourceRoot, destRoot, childRel, skipped);
|
|
217
|
+
}
|
|
201
218
|
}
|
|
202
|
-
|
|
203
|
-
|
|
219
|
+
catch (err) {
|
|
220
|
+
// A working directory is LIVE while it is being copied. readdir gives a
|
|
221
|
+
// listing, and by the time each entry is read it may be gone — an editor
|
|
222
|
+
// saving over a temp file, a build watcher cleaning output, another
|
|
223
|
+
// fanout arm writing into the same tree (write-capable fanout REQUIRES
|
|
224
|
+
// copy, so concurrent copies of one directory are the documented case,
|
|
225
|
+
// not an edge one). Failing the whole dispatch on a raw ENOENT because
|
|
226
|
+
// one incidental file blinked out is the wrong trade: the caller loses
|
|
227
|
+
// real work over a file they did not care about.
|
|
228
|
+
//
|
|
229
|
+
// Only "it disappeared" is tolerated. A permission error or a full disk
|
|
230
|
+
// still fails loudly, because those mean the copy is not the snapshot it
|
|
231
|
+
// claims to be for reasons that will not have fixed themselves.
|
|
232
|
+
const code = err?.code;
|
|
233
|
+
if (code !== "ENOENT")
|
|
234
|
+
throw err;
|
|
235
|
+
vanished.push(childRel.split(path.sep).join("/"));
|
|
204
236
|
}
|
|
205
237
|
}
|
|
206
238
|
}
|
|
@@ -224,7 +256,16 @@ async function fingerprintTree(root, rel = "", out = new Map()) {
|
|
|
224
256
|
}
|
|
225
257
|
if (!entry.isFile())
|
|
226
258
|
continue;
|
|
227
|
-
|
|
259
|
+
try {
|
|
260
|
+
out.set(childRel.split(path.sep).join("/"), await fingerprintFile(path.join(root, childRel)));
|
|
261
|
+
}
|
|
262
|
+
catch (err) {
|
|
263
|
+
// Same race, other end: a file listed a moment ago can be gone before it
|
|
264
|
+
// is hashed. An absent file simply does not appear in the fingerprint,
|
|
265
|
+
// which diffFingerprints already reads as "deleted" — the truth.
|
|
266
|
+
if (err?.code !== "ENOENT")
|
|
267
|
+
throw err;
|
|
268
|
+
}
|
|
228
269
|
}
|
|
229
270
|
return out;
|
|
230
271
|
}
|
|
@@ -347,7 +388,8 @@ async function prepareCopyWorkspace(routeName, workingDir, files) {
|
|
|
347
388
|
const workspaceRoot = path.join(root, workspaceRunId(routeName));
|
|
348
389
|
const effectiveWorkingDir = path.join(workspaceRoot, "workspace");
|
|
349
390
|
const skippedLinks = [];
|
|
350
|
-
|
|
391
|
+
const vanishedFiles = [];
|
|
392
|
+
await copyTree(originalWorkingDir, effectiveWorkingDir, "", skippedLinks, vanishedFiles);
|
|
351
393
|
const before = await fingerprintTree(effectiveWorkingDir);
|
|
352
394
|
return {
|
|
353
395
|
policy: "copy",
|
|
@@ -372,6 +414,14 @@ async function prepareCopyWorkspace(routeName, workingDir, files) {
|
|
|
372
414
|
notes: [
|
|
373
415
|
"The source workspace was copied before dispatch, so edits in the agent workspace are not applied automatically.",
|
|
374
416
|
"This isolates project state, but it is not a hardened OS sandbox for commands with host filesystem access.",
|
|
417
|
+
...(vanishedFiles.length > 0
|
|
418
|
+
? [
|
|
419
|
+
`${vanishedFiles.length} file(s) disappeared while the workspace was being ` +
|
|
420
|
+
`copied and are absent from it: ${vanishedFiles.slice(0, 5).join(", ")}` +
|
|
421
|
+
`${vanishedFiles.length > 5 ? ", …" : ""}. The copy is a snapshot of a ` +
|
|
422
|
+
`directory that was being written to.`,
|
|
423
|
+
]
|
|
424
|
+
: []),
|
|
375
425
|
...(skippedLinks.length > 0
|
|
376
426
|
? [
|
|
377
427
|
`Dropped ${skippedLinks.length} symlink(s) pointing outside the workspace, which would ` +
|
|
@@ -397,7 +447,8 @@ async function prepareGitWorktreeWorkspace(routeName, workingDir, files) {
|
|
|
397
447
|
const workspaceRoot = path.join(gitWorkspaceRoot, workspaceRunId(routeName));
|
|
398
448
|
const worktreeRoot = path.join(workspaceRoot, "worktree");
|
|
399
449
|
await mkdir(workspaceRoot, { recursive: true });
|
|
400
|
-
await git(["
|
|
450
|
+
const baseCommit = await git(["rev-parse", "HEAD"], gitRoot);
|
|
451
|
+
await git(["worktree", "add", "--detach", worktreeRoot, baseCommit], gitRoot);
|
|
401
452
|
const effectiveWorkingDir = prefix ? path.join(worktreeRoot, prefix) : worktreeRoot;
|
|
402
453
|
await stat(effectiveWorkingDir);
|
|
403
454
|
const before = await fingerprintTree(worktreeRoot);
|
|
@@ -416,6 +467,7 @@ async function prepareGitWorktreeWorkspace(routeName, workingDir, files) {
|
|
|
416
467
|
originalWorkingDir,
|
|
417
468
|
effectiveWorkingDir,
|
|
418
469
|
workspaceRoot,
|
|
470
|
+
baseCommit,
|
|
419
471
|
isolated: true,
|
|
420
472
|
securityBoundary: "project_state_and_process_cwd",
|
|
421
473
|
changedFiles,
|
package/dist/workspaces.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workspaces.js","sourceRoot":"","sources":["../src/workspaces.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAC5D,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACrD,OAAO,EACL,QAAQ,EACR,KAAK,EACL,OAAO,EACP,QAAQ,EACR,QAAQ,EACR,EAAE,EACF,IAAI,EACJ,OAAO,GACR,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAWtC,MAAM,QAAQ,GAAG,SAAS,CAAC,UAAU,CAAC,CAAC;AAEvC,MAAM,aAAa,GAAG,IAAI,GAAG,CAAC;IAC5B,MAAM;IACN,cAAc;IACd,MAAM;IACN,OAAO;IACP,UAAU;IACV,OAAO;IACP,QAAQ;IACR,QAAQ;IACR,KAAK;IACL,KAAK;IACL,OAAO;IACP,MAAM;IACN,aAAa;CACd,CAAC,CAAC;AAmBH,MAAM,UAAU,kBAAkB,CAChC,GAAkB,EAClB,aAAwC,EACxC,eAAiC;IAEjC,IAAI,eAAe;QAAE,OAAO,eAAe,CAAC;IAC5C,IAAI,GAAG,CAAC,eAAe;QAAE,OAAO,GAAG,CAAC,eAAe,CAAC;IACpD,OAAO,aAAa,KAAK,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,eAAe,CAAC;AACpE,CAAC;AAED,MAAM,UAAU,yBAAyB,CAAC,MAAuB;IAC/D,OAAO,MAAM,KAAK,MAAM,IAAI,MAAM,KAAK,cAAc,CAAC;AACxD,CAAC;AAED,SAAS,QAAQ,CAAC,KAAa;IAC7B,OAAO,KAAK,CAAC,OAAO,CAAC,kBAAkB,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,OAAO,CAAC;AACxE,CAAC;AAED,SAAS,cAAc,CAAC,SAAiB;IACvC,MAAM,KAAK,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;IAC7D,OAAO,GAAG,KAAK,IAAI,OAAO,CAAC,GAAG,IAAI,QAAQ,CAAC,SAAS,CAAC,IAAI,UAAU,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;AACtF,CAAC;AAED,SAAS,UAAU,CAAC,UAAkB;IACpC,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;AACnD,CAAC;AAED,SAAS,gBAAgB,CAAC,kBAA0B;IAClD,OAAO,CACL,OAAO,CAAC,GAAG,CAAC,+BAA+B;QAC3C,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE,mBAAmB,EAAE,YAAY,CAAC,CACjE,CAAC;AACJ,CAAC;AAED,SAAS,mBAAmB,CAAC,kBAA0B;IACrD,OAAO,CACL,OAAO,CAAC,GAAG,CAAC,+BAA+B;QAC3C,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,kBAAkB,EAAE,YAAY,EAAE,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,kBAAkB,CAAC,CAAC,CAAC,CACtG,CAAC;AACJ,CAAC;AAED,MAAM,4BAA4B,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;AAEzD,SAAS,iBAAiB;IACxB,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,qCAAqC,CAAC;IAC9D,MAAM,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;IACvC,OAAO,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,4BAA4B,CAAC;AACxF,CAAC;AAED;;;;;;;;;GASG;AACH,KAAK,UAAU,wBAAwB,CAAC,IAAY;IAClD,MAAM,QAAQ,GAAG,iBAAiB,EAAE,CAAC;IACrC,IAAI,OAAO,CAAC;IACZ,IAAI,CAAC;QACH,OAAO,GAAG,MAAM,OAAO,CAAC,IAAI,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;IACzD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO;IACT,CAAC;IACD,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IACvB,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC5B,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE;YAAE,SAAS;QACnC,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;QACzC,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,CAAC;YAC9B,IAAI,GAAG,GAAG,IAAI,CAAC,OAAO,GAAG,QAAQ,EAAE,CAAC;gBAClC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;YACnD,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,yEAAyE;QAC3E,CAAC;IACH,CAAC;AACH,CAAC;AAED,KAAK,UAAU,sBAAsB,CAAC,OAAe,EAAE,IAAY;IACjE,MAAM,QAAQ,GAAG,iBAAiB,EAAE,CAAC;IACrC,IAAI,OAAO,CAAC;IACZ,IAAI,CAAC;QACH,OAAO,GAAG,MAAM,OAAO,CAAC,IAAI,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;IACzD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO;IACT,CAAC;IACD,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IACvB,IAAI,UAAU,GAAG,KAAK,CAAC;IACvB,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC5B,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE;YAAE,SAAS;QACnC,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;QAClD,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,CAAC;YACvC,IAAI,GAAG,GAAG,IAAI,CAAC,OAAO,IAAI,QAAQ;gBAAE,SAAS;YAC7C,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,UAAU,CAAC,CAAC;YAC1D,IAAI,CAAC;gBACH,MAAM,GAAG,CAAC,CAAC,UAAU,EAAE,QAAQ,EAAE,SAAS,EAAE,YAAY,CAAC,EAAE,OAAO,CAAC,CAAC;gBACpE,UAAU,GAAG,IAAI,CAAC;YACpB,CAAC;YAAC,MAAM,CAAC;gBACP,+DAA+D;gBAC/D,uCAAuC;YACzC,CAAC;YACD,MAAM,EAAE,CAAC,aAAa,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QAC5D,CAAC;QAAC,MAAM,CAAC;YACP,cAAc;QAChB,CAAC;IACH,CAAC;IACD,IAAI,UAAU,EAAE,CAAC;QACf,IAAI,CAAC;YACH,MAAM,GAAG,CAAC,CAAC,UAAU,EAAE,OAAO,CAAC,EAAE,OAAO,CAAC,CAAC;QAC5C,CAAC;QAAC,MAAM,CAAC;YACP,cAAc;QAChB,CAAC;IACH,CAAC;AACH,CAAC;AAED,SAAS,aAAa,CAAC,OAAe,EAAE,UAAkB;IACxD,IAAI,aAAa,CAAC,GAAG,CAAC,UAAU,CAAC;QAAE,OAAO,IAAI,CAAC;IAC/C,MAAM,UAAU,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACrD,OAAO,UAAU,KAAK,8BAA8B,IAAI,UAAU,CAAC,UAAU,CAAC,+BAA+B,CAAC,CAAC;AACjH,CAAC;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,KAAK,UAAU,QAAQ,CACrB,UAAkB,EAClB,QAAgB,EAChB,QAAgB,EAChB,OAAiB;IAEjB,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;IACjD,IAAI,MAAc,CAAC;IACnB,IAAI,CAAC;QACH,MAAM,GAAG,MAAM,QAAQ,CAAC,QAAQ,CAAC,CAAC;IACpC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO;IACT,CAAC;IACD,qEAAqE;IACrE,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,CAAC;IAC9D,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;IAChD,IAAI,GAAG,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;QACjE,OAAO,CAAC,IAAI,CAAC,GAAG,QAAQ,OAAO,MAAM,EAAE,CAAC,CAAC;QACzC,OAAO;IACT,CAAC;IACD,IAAI,CAAC;QACH,MAAM,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC;IACvD,CAAC;IAAC,MAAM,CAAC;QACP,0EAA0E;QAC1E,sEAAsE;IACxE,CAAC;AACH,CAAC;AAED,KAAK,UAAU,QAAQ,CACrB,UAAkB,EAClB,QAAgB,EAChB,GAAG,GAAG,EAAE,EACR,UAAoB,EAAE;IAEtB,MAAM,SAAS,GAAG,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC;IAChE,MAAM,OAAO,GAAG,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;IAC1D,MAAM,KAAK,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC1C,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,SAAS,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;IAClE,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC5B,MAAM,QAAQ,GAAG,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC;QAC/D,IAAI,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;YACxB,IAAI,aAAa,CAAC,QAAQ,EAAE,KAAK,CAAC,IAAI,CAAC;gBAAE,SAAS;YAClD,MAAM,QAAQ,CAAC,UAAU,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;YACxD,SAAS;QACX,CAAC;QACD,IAAI,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC;YACnB,MAAM,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,QAAQ,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC;YAC/E,SAAS;QACX,CAAC;QACD,IAAI,KAAK,CAAC,cAAc,EAAE,EAAE,CAAC;YAC3B,MAAM,QAAQ,CAAC,UAAU,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;QAC1D,CAAC;IACH,CAAC;AACH,CAAC;AAED,KAAK,UAAU,eAAe,CAAC,QAAgB;IAC7C,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,QAAQ,CAAC,CAAC;IACtC,OAAO;QACL,IAAI,EAAE,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;QACrD,IAAI,EAAE,IAAI,CAAC,UAAU;KACtB,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,eAAe,CAAC,IAAY,EAAE,GAAG,GAAG,EAAE,EAAE,MAAsB,IAAI,GAAG,EAAE;IACpF,MAAM,OAAO,GAAG,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAClD,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,OAAO,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;IAChE,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC5B,MAAM,QAAQ,GAAG,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC;QAC/D,IAAI,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;YACxB,IAAI,aAAa,CAAC,QAAQ,EAAE,KAAK,CAAC,IAAI,CAAC;gBAAE,SAAS;YAClD,MAAM,eAAe,CAAC,IAAI,EAAE,QAAQ,EAAE,GAAG,CAAC,CAAC;YAC3C,SAAS;QACX,CAAC;QACD,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;YAAE,SAAS;QAC9B,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,MAAM,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC;IAChG,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,gBAAgB,CAAC,MAAsB,EAAE,KAAqB;IACrE,MAAM,OAAO,GAA0B,EAAE,CAAC;IAC1C,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,IAAI,EAAE,EAAE,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IAC3D,KAAK,MAAM,QAAQ,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC;QACzC,MAAM,OAAO,GAAG,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACrC,MAAM,OAAO,GAAG,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACpC,IAAI,CAAC,OAAO,IAAI,OAAO,EAAE,CAAC;YACxB,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;YAChD,SAAS;QACX,CAAC;QACD,IAAI,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC;YACxB,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC;YAClD,SAAS;QACX,CAAC;QACD,IAAI,OAAO,IAAI,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,KAAK,OAAO,CAAC,IAAI,IAAI,OAAO,CAAC,IAAI,KAAK,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;YAC3F,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC;QACrD,CAAC;IACH,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAS,QAAQ,CAAC,KAAe,EAAE,kBAA0B,EAAE,mBAA2B;IACxF,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;QACxB,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACpC,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,kBAAkB,EAAE,QAAQ,CAAC,CAAC;QACxD,IAAI,GAAG,KAAK,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;YACnE,OAAO,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE,GAAG,CAAC,CAAC;QAC7C,CAAC;QACD,oEAAoE;QACpE,qEAAqE;QACrE,qEAAqE;QACrE,kEAAkE;QAClE,OAAO,IAAI,CAAC;IACd,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,YAAY,CAAC,KAAe,EAAE,kBAA0B;IACtE,MAAM,IAAI,GAAG,UAAU,CAAC,kBAAkB,CAAC,CAAC;IAC5C,MAAM,GAAG,GAAG,IAAI,GAAG,EAAU,CAAC;IAC9B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;QACpD,IAAI,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YACjD,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC5C,CAAC;IACH,CAAC;IACD,OAAO,CAAC,GAAG,GAAG,CAAC,CAAC;AAClB,CAAC;AAED,SAAS,WAAW,CAAC,OAA8B;IACjD,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,kDAAkD,CAAC;IACpF,MAAM,MAAM,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;IACrD,KAAK,MAAM,MAAM,IAAI,OAAO;QAAE,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACvD,OAAO,GAAG,OAAO,CAAC,MAAM,qBAAqB,MAAM,CAAC,KAAK,WAAW,MAAM,CAAC,QAAQ,cAAc,MAAM,CAAC,OAAO,WAAW,CAAC;AAC7H,CAAC;AAED;;;;;;GAMG;AACH,SAAS,UAAU,CAAC,KAAe,EAAE,kBAA0B;IAC7D,MAAM,IAAI,GAAG,YAAY,CAAC,KAAK,EAAE,kBAAkB,CAAC,CAAC;IACrD,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IACjC,OAAO;QACL,sBAAsB,IAAI,CAAC,MAAM,YAAY,IAAI,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,WAAW;YACrF,iBAAiB,IAAI,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,4DAA4D;YAC/G,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,sEAAsE;KAC3F,CAAC;AACJ,CAAC;AAED,SAAS,eAAe,CAAC,MAAsB,EAAE,SAAuB;IACtE,OAAO;QACL,GAAG,MAAM;QACT,SAAS;KACV,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,sBAAsB,CACnC,MAAkC,EAClC,UAAkB,EAClB,KAAe;IAEf,MAAM,kBAAkB,GAAG,UAAU,CAAC,UAAU,CAAC,CAAC;IAClD,OAAO;QACL,MAAM;QACN,kBAAkB;QAClB,mBAAmB,EAAE,kBAAkB;QACvC,KAAK;QACL,QAAQ,EAAE,KAAK;QACf,KAAK,CAAC,MAAM,CAAC,MAAM;YACjB,OAAO,eAAe,CAAC,MAAM,EAAE;gBAC7B,MAAM;gBACN,kBAAkB;gBAClB,mBAAmB,EAAE,kBAAkB;gBACvC,QAAQ,EAAE,KAAK;gBACf,gBAAgB,EAAE,MAAM;gBACxB,KAAK,EACH,MAAM,KAAK,eAAe;oBACxB,CAAC,CAAC,CAAC,4IAA4I,CAAC;oBAChJ,CAAC,CAAC,CAAC,6EAA6E,CAAC;aACtF,CAAC,CAAC;QACL,CAAC;KACF,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,oBAAoB,CACjC,SAAiB,EACjB,UAAkB,EAClB,KAAe;IAEf,MAAM,kBAAkB,GAAG,UAAU,CAAC,UAAU,CAAC,CAAC;IAClD,MAAM,IAAI,GAAG,gBAAgB,CAAC,kBAAkB,CAAC,CAAC;IAClD,MAAM,wBAAwB,CAAC,IAAI,CAAC,CAAC;IACrC,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,cAAc,CAAC,SAAS,CAAC,CAAC,CAAC;IACjE,MAAM,mBAAmB,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,WAAW,CAAC,CAAC;IAClE,MAAM,YAAY,GAAa,EAAE,CAAC;IAClC,MAAM,QAAQ,CAAC,kBAAkB,EAAE,mBAAmB,EAAE,EAAE,EAAE,YAAY,CAAC,CAAC;IAC1E,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,mBAAmB,CAAC,CAAC;IAC1D,OAAO;QACL,MAAM,EAAE,MAAM;QACd,kBAAkB;QAClB,mBAAmB;QACnB,KAAK,EAAE,QAAQ,CAAC,KAAK,EAAE,kBAAkB,EAAE,mBAAmB,CAAC;QAC/D,QAAQ,EAAE,IAAI;QACd,aAAa;QACb,KAAK,CAAC,MAAM,CAAC,MAAM;YACjB,MAAM,KAAK,GAAG,MAAM,eAAe,CAAC,mBAAmB,CAAC,CAAC;YACzD,MAAM,YAAY,GAAG,gBAAgB,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;YACrD,OAAO,eAAe,CAAC,MAAM,EAAE;gBAC7B,MAAM,EAAE,MAAM;gBACd,kBAAkB;gBAClB,mBAAmB;gBACnB,aAAa;gBACb,QAAQ,EAAE,IAAI;gBACd,gBAAgB,EAAE,+BAA+B;gBACjD,YAAY;gBACZ,WAAW,EAAE,WAAW,CAAC,YAAY,CAAC;gBACtC,WAAW,EAAE,UAAU,aAAa,gDAAgD;gBACpF,KAAK,EAAE;oBACL,iHAAiH;oBACjH,4GAA4G;oBAC5G,GAAG,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC;wBACzB,CAAC,CAAC;4BACE,WAAW,YAAY,CAAC,MAAM,0DAA0D;gCACtF,oEAAoE,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG;yBACjG;wBACH,CAAC,CAAC,EAAE,CAAC;oBACP,GAAG,UAAU,CAAC,KAAK,EAAE,kBAAkB,CAAC;iBACzC;aACF,CAAC,CAAC;QACL,CAAC;KACF,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,GAAG,CAAC,IAAc,EAAE,GAAW;IAC5C,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,QAAQ,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC;IAC3E,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC;AAC/B,CAAC;AAED,KAAK,UAAU,2BAA2B,CACxC,SAAiB,EACjB,UAAkB,EAClB,KAAe;IAEf,MAAM,kBAAkB,GAAG,UAAU,CAAC,UAAU,CAAC,CAAC;IAClD,MAAM,OAAO,GAAG,MAAM,GAAG,CAAC,CAAC,WAAW,EAAE,iBAAiB,CAAC,EAAE,kBAAkB,CAAC,CAAC;IAChF,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,CAAC,WAAW,EAAE,eAAe,CAAC,EAAE,kBAAkB,CAAC,CAAC;IAC7E,MAAM,gBAAgB,GAAG,mBAAmB,CAAC,OAAO,CAAC,CAAC;IACtD,MAAM,sBAAsB,CAAC,OAAO,EAAE,gBAAgB,CAAC,CAAC;IACxD,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,cAAc,CAAC,SAAS,CAAC,CAAC,CAAC;IAC7E,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,UAAU,CAAC,CAAC;IAC1D,MAAM,KAAK,CAAC,aAAa,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAChD,MAAM,GAAG,CAAC,CAAC,UAAU,EAAE,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,CAAC,EAAE,OAAO,CAAC,CAAC;IAC1E,MAAM,mBAAmB,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC;IACpF,MAAM,IAAI,CAAC,mBAAmB,CAAC,CAAC;IAChC,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,YAAY,CAAC,CAAC;IACnD,OAAO;QACL,MAAM,EAAE,cAAc;QACtB,kBAAkB;QAClB,mBAAmB;QACnB,KAAK,EAAE,QAAQ,CAAC,KAAK,EAAE,OAAO,EAAE,YAAY,CAAC;QAC7C,QAAQ,EAAE,IAAI;QACd,aAAa;QACb,KAAK,CAAC,MAAM,CAAC,MAAM;YACjB,MAAM,KAAK,GAAG,MAAM,eAAe,CAAC,YAAY,CAAC,CAAC;YAClD,MAAM,YAAY,GAAG,gBAAgB,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;YACrD,OAAO,eAAe,CAAC,MAAM,EAAE;gBAC7B,MAAM,EAAE,cAAc;gBACtB,kBAAkB;gBAClB,mBAAmB;gBACnB,aAAa;gBACb,QAAQ,EAAE,IAAI;gBACd,gBAAgB,EAAE,+BAA+B;gBACjD,YAAY;gBACZ,WAAW,EAAE,WAAW,CAAC,YAAY,CAAC;gBACtC,WAAW,EAAE,cAAc,OAAO,oBAAoB,YAAY,gDAAgD;gBAClH,KAAK,EAAE;oBACL,iGAAiG;oBACjG,4GAA4G;oBAC5G,GAAG,UAAU,CAAC,KAAK,EAAE,kBAAkB,CAAC;iBACzC;aACF,CAAC,CAAC;QACL,CAAC;KACF,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,IAKtC;IACC,QAAQ,IAAI,CAAC,MAAM,EAAE,CAAC;QACpB,KAAK,QAAQ,CAAC;QACd,KAAK,eAAe;YAClB,OAAO,sBAAsB,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;QAC1E,KAAK,MAAM;YACT,OAAO,oBAAoB,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;QAC3E,KAAK,cAAc;YACjB,OAAO,2BAA2B,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;IACpF,CAAC;AACH,CAAC"}
|
|
1
|
+
{"version":3,"file":"workspaces.js","sourceRoot":"","sources":["../src/workspaces.ts"],"names":[],"mappings":"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"}
|