@linkshell/host 0.4.44 → 0.4.46

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (69) hide show
  1. package/dist/host/src/drivers/acp/connection.js +2 -7
  2. package/dist/host/src/drivers/acp/connection.js.map +1 -1
  3. package/dist/host/src/drivers/acp/driver.js +2 -4
  4. package/dist/host/src/drivers/acp/driver.js.map +1 -1
  5. package/dist/host/src/drivers/auth.js +1 -3
  6. package/dist/host/src/drivers/auth.js.map +1 -1
  7. package/dist/host/src/drivers/claude/driver.js +23 -11
  8. package/dist/host/src/drivers/claude/driver.js.map +1 -1
  9. package/dist/host/src/drivers/codex/app-server.d.ts +6 -0
  10. package/dist/host/src/drivers/codex/app-server.js +44 -21
  11. package/dist/host/src/drivers/codex/app-server.js.map +1 -1
  12. package/dist/host/src/drivers/codex/driver.d.ts +1 -0
  13. package/dist/host/src/drivers/codex/driver.js +11 -7
  14. package/dist/host/src/drivers/codex/driver.js.map +1 -1
  15. package/dist/host/src/drivers/codex/installation.d.ts +2 -0
  16. package/dist/host/src/drivers/codex/installation.js +29 -0
  17. package/dist/host/src/drivers/codex/installation.js.map +1 -0
  18. package/dist/host/src/fs.d.ts +13 -0
  19. package/dist/host/src/fs.js +29 -2
  20. package/dist/host/src/fs.js.map +1 -1
  21. package/dist/host/src/host.d.ts +1 -0
  22. package/dist/host/src/host.js +6 -4
  23. package/dist/host/src/host.js.map +1 -1
  24. package/dist/host/src/input.d.ts +29 -2
  25. package/dist/host/src/input.js +113 -5
  26. package/dist/host/src/input.js.map +1 -1
  27. package/dist/host/src/local-transport.d.ts +5 -0
  28. package/dist/host/src/local-transport.js +22 -0
  29. package/dist/host/src/local-transport.js.map +1 -0
  30. package/dist/host/src/ports.js +10 -1
  31. package/dist/host/src/ports.js.map +1 -1
  32. package/dist/host/src/process.d.ts +12 -0
  33. package/dist/host/src/process.js +59 -0
  34. package/dist/host/src/process.js.map +1 -0
  35. package/dist/host/src/rpc/client.js +2 -3
  36. package/dist/host/src/rpc/client.js.map +1 -1
  37. package/dist/host/src/rpc/server.d.ts +1 -0
  38. package/dist/host/src/rpc/server.js +12 -3
  39. package/dist/host/src/rpc/server.js.map +1 -1
  40. package/dist/host/src/screen-h264.d.ts +15 -0
  41. package/dist/host/src/screen-h264.js +88 -0
  42. package/dist/host/src/screen-h264.js.map +1 -0
  43. package/dist/host/src/screen-pacer.d.ts +7 -1
  44. package/dist/host/src/screen-pacer.js +11 -5
  45. package/dist/host/src/screen-pacer.js.map +1 -1
  46. package/dist/host/src/screen-session.d.ts +35 -0
  47. package/dist/host/src/screen-session.js +26 -0
  48. package/dist/host/src/screen-session.js.map +1 -0
  49. package/dist/host/src/screen-viewer.d.ts +1 -1
  50. package/dist/host/src/screen-viewer.js +373 -42
  51. package/dist/host/src/screen-viewer.js.map +1 -1
  52. package/dist/host/src/screen.d.ts +3 -1
  53. package/dist/host/src/screen.js +560 -165
  54. package/dist/host/src/screen.js.map +1 -1
  55. package/dist/host/src/terminals.js +6 -3
  56. package/dist/host/src/terminals.js.map +1 -1
  57. package/dist/host/src/windows-screen.d.ts +38 -0
  58. package/dist/host/src/windows-screen.js +80 -0
  59. package/dist/host/src/windows-screen.js.map +1 -0
  60. package/dist/host/src/windows-video.d.ts +78 -0
  61. package/dist/host/src/windows-video.js +368 -0
  62. package/dist/host/src/windows-video.js.map +1 -0
  63. package/dist/host/src/worktrees.js +2 -2
  64. package/dist/host/src/worktrees.js.map +1 -1
  65. package/dist/host/tsconfig.tsbuildinfo +1 -1
  66. package/dist/wire/src/rpc.d.ts +49 -0
  67. package/dist/wire/src/rpc.js +18 -0
  68. package/dist/wire/src/rpc.js.map +1 -1
  69. package/package.json +8 -6
@@ -0,0 +1,368 @@
1
+ import { spawn } from "node:child_process";
2
+ import { randomBytes } from "node:crypto";
3
+ import { existsSync } from "node:fs";
4
+ import { dirname, join } from "node:path";
5
+ import { performance } from "node:perf_hooks";
6
+ import { RTCPeerConnection, RTCRtpCodecParameters, RtpHeader, RtpPacket, useH264, useSdesMid, useAbsSendTime } from "werift";
7
+ import { inputEvent } from "./input.js";
8
+ import { H264AccessUnits, ScreenInputOrder, h264Nals, h264Payloads } from "./screen-h264.js";
9
+ import { windowsHelper } from "./windows-screen.js";
10
+ export function windowsMedia() {
11
+ const helper = windowsHelper();
12
+ const file = process.env.LINKSHELL_WINDOWS_FFMPEG || (helper && join(dirname(helper), "media", "ffmpeg.exe"));
13
+ return file && existsSync(file) ? file : undefined;
14
+ }
15
+ const profiles = [
16
+ { width: 1920, fps: 60, bitrate: 8_000_000 },
17
+ { width: 1600, fps: 60, bitrate: 5_000_000 },
18
+ { width: 1280, fps: 30, bitrate: 3_000_000 },
19
+ { width: 960, fps: 30, bitrate: 1_500_000 },
20
+ { width: 640, fps: 20, bitrate: 700_000 },
21
+ ];
22
+ export function windowsVideoProfile(level, request) {
23
+ const profile = profiles[Math.max(0, Math.min(profiles.length - 1, level))];
24
+ const width = Math.min(profile.width, request.maxWidth ?? 1920), fps = Math.min(profile.fps, request.maxFps ?? 60, request.fps ?? 60);
25
+ return { width, fps, bitrate: Math.max(400_000, Math.round(profile.bitrate * (width / profile.width) ** 2 * fps / profile.fps)) };
26
+ }
27
+ /** Same SDP and input protocol as the Mac helper; media leaves through DTLS-SRTP, never the gateway. */
28
+ export class WindowsVideoSession {
29
+ request;
30
+ events;
31
+ id = `windows-video-${randomBytes(6).toString("hex")}`;
32
+ pc;
33
+ sender;
34
+ channels = new Map();
35
+ order = new ScreenInputOrder();
36
+ child;
37
+ closed = false;
38
+ hidden = false;
39
+ sending = false;
40
+ pending = [];
41
+ needsKey = true;
42
+ connected = false;
43
+ level = 0;
44
+ changed = performance.now();
45
+ goodSince = performance.now();
46
+ seq = randomBytes(2).readUInt16BE();
47
+ cursorSeq = 0;
48
+ timestamp = randomBytes(4).readUInt32BE();
49
+ lastFrame = performance.now();
50
+ sentFrames = 0;
51
+ sentBytes = 0;
52
+ dropped = 0;
53
+ captured = 0;
54
+ queueDrops = 0;
55
+ plis = 0;
56
+ lastStats = performance.now();
57
+ lastFeedback = 0;
58
+ estimate = 0;
59
+ strainedIntervals = 0;
60
+ encoder = "";
61
+ inputUsed = false;
62
+ parameterSets = new Map();
63
+ serial = Promise.resolve();
64
+ captureSerial = Promise.resolve();
65
+ warmed = () => { };
66
+ warming = new Promise(resolve => { this.warmed = resolve; });
67
+ monitor;
68
+ timeout;
69
+ constructor(request, events) {
70
+ this.request = request;
71
+ this.events = events;
72
+ this.pc = new RTCPeerConnection({
73
+ iceServers: request.iceServers.flatMap(server => server.urls.map(urls => ({ urls }))),
74
+ bundlePolicy: "max-bundle",
75
+ codecs: { video: [
76
+ useH264({ payloadType: 96, parameters: "profile-level-id=42e02a;packetization-mode=1;level-asymmetry-allowed=1" }),
77
+ new RTCRtpCodecParameters({ mimeType: "video/rtx", clockRate: 90000, payloadType: 97, parameters: "apt=96" }),
78
+ ] },
79
+ headerExtensions: { video: [useSdesMid(), useAbsSendTime()] },
80
+ });
81
+ this.sender = this.pc.addTransceiver("video", { direction: "sendonly" }).sender;
82
+ this.sender.onPictureLossIndication.subscribe(() => { this.plis++; this.needsKey = true; });
83
+ this.sender.onRtcp.subscribe(() => {
84
+ const estimate = Number(this.sender.receiverEstimatedMaxBitrate);
85
+ if (estimate > 0) {
86
+ this.estimate = estimate;
87
+ this.lastFeedback = performance.now();
88
+ }
89
+ });
90
+ this.pc.onIceCandidate.subscribe(candidate => {
91
+ if (candidate && !this.closed)
92
+ this.events.tell({ t: "ice", ...candidate.toJSON() });
93
+ });
94
+ this.pc.connectionStateChange.subscribe(state => {
95
+ if (this.closed)
96
+ return;
97
+ this.events.tell({ t: "state", connection: state, ice: this.pc.iceConnectionState });
98
+ this.connected = state === "connected";
99
+ if (this.connected) {
100
+ this.needsKey = true;
101
+ this.events.log("[screen] Windows H.264 video connected directly to the viewer");
102
+ }
103
+ else if (state === "failed" || state === "closed" || state === "disconnected")
104
+ this.fail("video connection lost");
105
+ });
106
+ for (const label of ["input", "pointer", "cursor", "shape"]) {
107
+ const lossy = label === "pointer" || label === "cursor";
108
+ const channel = this.pc.createDataChannel(label, lossy ? { ordered: false, maxRetransmits: 0 } : { ordered: true });
109
+ this.channels.set(label, channel);
110
+ if (label !== "input" && label !== "pointer")
111
+ continue;
112
+ channel.onMessage.subscribe(data => {
113
+ if (this.closed || this.hidden || typeof data !== "string" || data.length > 32_000)
114
+ return;
115
+ try {
116
+ const message = JSON.parse(data);
117
+ if (inputEvent.safeParse(message).success && this.order.accept(message, lossy)) {
118
+ this.inputUsed = true;
119
+ this.events.input(message);
120
+ }
121
+ }
122
+ catch { /* Invalid input cannot terminate a screen session. */ }
123
+ });
124
+ channel.stateChanged.subscribe(state => { if (state === "closed" && !this.closed)
125
+ this.release(); });
126
+ }
127
+ this.monitor = setInterval(() => this.report(), 1000);
128
+ this.timeout = setTimeout(() => { if (!this.connected)
129
+ this.fail("video negotiation timed out"); }, 30_000);
130
+ }
131
+ async offer() {
132
+ if (!windowsMedia() || !windowsHelper())
133
+ throw new Error("Windows video runtime is missing");
134
+ // Warm the encoder during ICE, so a connected receiver need not wait for hardware startup.
135
+ this.captureSerial = this.captureSerial.then(() => this.startCapture()).catch(error => this.fail(String(error)));
136
+ // Do not start the receiver's four-second first-frame deadline while probing a driver.
137
+ await this.warming;
138
+ if (this.closed)
139
+ return;
140
+ const offer = await this.pc.createOffer();
141
+ if (this.closed)
142
+ return;
143
+ const gathering = this.pc.setLocalDescription(offer);
144
+ this.events.tell({ t: "offer", sdp: offer.sdp });
145
+ void gathering.catch(error => this.fail(String(error)));
146
+ }
147
+ signal(message) {
148
+ this.serial = this.serial.then(async () => {
149
+ if (this.closed)
150
+ return;
151
+ if (message.t === "rtc.answer") {
152
+ await this.pc.setRemoteDescription({ type: "answer", sdp: message.sdp });
153
+ if (!this.sender.codec || this.sender.codec.mimeType.toLowerCase() !== "video/h264")
154
+ this.fail("viewer did not accept H.264");
155
+ }
156
+ else
157
+ await this.pc.addIceCandidate(message);
158
+ }).catch(error => this.fail(String(error)));
159
+ }
160
+ cursor(x, y) {
161
+ const channel = this.channels.get("cursor");
162
+ if (!channel || channel.readyState !== "open" || channel.bufferedAmount > 4096)
163
+ return false;
164
+ try {
165
+ channel.send(JSON.stringify({ t: "cursor", x, y, i: ++this.cursorSeq }));
166
+ return true;
167
+ }
168
+ catch {
169
+ return false;
170
+ }
171
+ }
172
+ pause(hidden) {
173
+ if (this.hidden === hidden || this.closed)
174
+ return;
175
+ this.hidden = hidden;
176
+ this.needsKey = true;
177
+ if (hidden)
178
+ this.release();
179
+ this.captureSerial = this.captureSerial.then(async () => { await this.stopCapture(); if (!this.hidden && !this.closed)
180
+ this.startCapture(); }).catch(error => this.fail(String(error)));
181
+ }
182
+ startCapture() {
183
+ if (this.closed || this.hidden)
184
+ return;
185
+ const profile = windowsVideoProfile(this.level, this.request);
186
+ const child = spawn(windowsHelper(), ["--video", String(this.request.screen), String(profile.width), String(profile.fps), String(profile.bitrate), windowsMedia()], {
187
+ windowsHide: true, stdio: ["pipe", "pipe", "pipe"],
188
+ });
189
+ this.child = child;
190
+ this.needsKey = true;
191
+ const splitter = new H264AccessUnits();
192
+ let errors = "", received = false;
193
+ const startup = setTimeout(() => { if (this.child === child && !received)
194
+ this.fail("hardware encoder produced no frames"); }, 12_000);
195
+ child.stdin.on("error", () => { });
196
+ child.stdout.on("data", (chunk) => {
197
+ if (this.child !== child || this.closed)
198
+ return;
199
+ try {
200
+ splitter.push(chunk, (unit, key) => {
201
+ received = true;
202
+ clearTimeout(startup);
203
+ this.warmed();
204
+ this.enqueue(unit, key);
205
+ });
206
+ }
207
+ catch (error) {
208
+ this.fail(String(error));
209
+ }
210
+ });
211
+ child.stderr.on("data", (chunk) => {
212
+ const text = chunk.toString();
213
+ errors = (errors + text).slice(-2000);
214
+ const encoder = /\[video\] encoder=(\S+)/.exec(text)?.[1];
215
+ if (encoder) {
216
+ this.encoder = encoder;
217
+ this.events.log(`[screen] Windows hardware encoder: ${encoder}`);
218
+ }
219
+ });
220
+ child.on("error", error => this.fail(error.message));
221
+ child.on("exit", code => {
222
+ clearTimeout(startup);
223
+ if (this.child === child && !this.closed) {
224
+ this.child = undefined;
225
+ this.fail(`encoder exited ${code}: ${errors.trim()}`);
226
+ }
227
+ });
228
+ }
229
+ enqueue(unit, key) {
230
+ const nals = h264Nals(unit);
231
+ for (const nal of nals) {
232
+ const type = nal[0] & 31;
233
+ if (type === 7 || type === 8)
234
+ this.parameterSets.set(type, Buffer.from(nal));
235
+ }
236
+ if (!nals.some(nal => (nal[0] & 31) >= 1 && (nal[0] & 31) <= 5))
237
+ return;
238
+ this.captured++;
239
+ if (this.closed || this.hidden || !this.connected)
240
+ return;
241
+ const at = performance.now();
242
+ if (this.pending.length >= 2 || (this.pending[0] && at - this.pending[0].at > 80)) {
243
+ this.dropped += this.pending.length;
244
+ this.queueDrops += this.pending.length;
245
+ this.pending = [];
246
+ this.needsKey = true;
247
+ }
248
+ this.pending.push({ unit, key, at });
249
+ if (this.sending)
250
+ return;
251
+ this.sending = true;
252
+ void (async () => {
253
+ while (this.pending.length && !this.closed && !this.hidden) {
254
+ const next = this.pending.shift();
255
+ await this.frame(next.unit, next.key, next.at);
256
+ }
257
+ })().catch(error => this.fail(String(error))).finally(() => { this.sending = false; });
258
+ }
259
+ async frame(unit, key, capturedAt) {
260
+ if (this.needsKey && !key) {
261
+ this.dropped++;
262
+ return;
263
+ }
264
+ this.needsKey = false;
265
+ const now = performance.now();
266
+ this.timestamp = (this.timestamp + Math.max(1, Math.round((capturedAt - this.lastFrame) * 90))) >>> 0;
267
+ this.lastFrame = capturedAt;
268
+ try {
269
+ // A receiver may join after the initial SPS/PPS, or lose one at an IDR.
270
+ const nals = h264Nals(unit);
271
+ const missing = key ? [...this.parameterSets].filter(([type]) => !nals.some(nal => (nal[0] & 31) === type)).map(([, nal]) => Buffer.concat([Buffer.from([0, 0, 0, 1]), nal])) : [];
272
+ const payloads = h264Payloads(missing.length ? Buffer.concat([...missing, unit]) : unit);
273
+ for (let i = 0; i < payloads.length; i += 32) {
274
+ if (this.closed || this.hidden)
275
+ break;
276
+ if (performance.now() - now > 120) {
277
+ this.needsKey = true;
278
+ this.dropped++;
279
+ break;
280
+ }
281
+ // Small batches avoid one event-loop round trip per UDP packet in a large IDR.
282
+ await Promise.all(payloads.slice(i, i + 32).map((payload, offset) => this.sender.sendRtp(new RtpPacket(new RtpHeader({
283
+ payloadType: 96, sequenceNumber: this.seq++ & 0xffff, timestamp: this.timestamp, ssrc: this.sender.ssrc, marker: i + offset === payloads.length - 1,
284
+ }), payload))));
285
+ }
286
+ this.sentFrames++;
287
+ this.sentBytes += unit.length;
288
+ }
289
+ catch (error) {
290
+ this.fail(String(error));
291
+ }
292
+ }
293
+ report() {
294
+ if (this.closed)
295
+ return;
296
+ const now = performance.now(), elapsed = (now - this.lastStats) / 1000;
297
+ const profile = windowsVideoProfile(this.level, this.request);
298
+ const sendBitrate = Math.round(this.sentBytes * 8 / elapsed);
299
+ if (process.env.LINKSHELL_SCREEN_DIAGNOSTICS === "1")
300
+ this.events.log(`[screen] Windows video ${JSON.stringify({ captured: this.captured, sent: this.sentFrames, dropped: this.dropped, queueDrops: this.queueDrops, pli: this.plis, bitrate: sendBitrate, estimate: this.estimate })}`);
301
+ this.captured = this.queueDrops = this.plis = 0;
302
+ this.events.tell({ t: "stats", encoder: this.encoder, codec: "H264", fps: Math.round(this.sentFrames / elapsed), bitrate: Math.round(this.sentBytes * 8 / elapsed), targetFps: profile.fps, targetBitrate: profile.bitrate, dropped: this.dropped });
303
+ this.sentFrames = this.sentBytes = 0;
304
+ this.lastStats = now;
305
+ if (!this.connected || this.hidden)
306
+ return;
307
+ const feedback = this.lastFeedback > 0 && now - this.lastFeedback < 3000;
308
+ const pair = this.pc.iceTransports[0]?.connection.nominated;
309
+ // A same-computer receiver can bootstrap a low REMB from an almost still desktop.
310
+ // That estimate says nothing about link capacity and must not trigger repeated encoder restarts.
311
+ const loopback = pair && pair.localCandidate.host === pair.remoteCandidate.host;
312
+ const strained = this.dropped > profile.fps / 2 || (!loopback && feedback && this.estimate < profile.bitrate * 0.75 && sendBitrate > this.estimate * 0.9);
313
+ this.strainedIntervals = strained ? this.strainedIntervals + 1 : 0;
314
+ this.dropped = 0;
315
+ if (strained) {
316
+ this.goodSince = now;
317
+ if (this.strainedIntervals >= 3 && now - this.changed > 10_000 && this.level < profiles.length - 1)
318
+ this.adapt(this.level + 1);
319
+ }
320
+ else if (feedback && this.level > 0 && this.estimate > profiles[this.level - 1].bitrate * 1.2 && now - this.goodSince > 20_000 && now - this.changed > 20_000)
321
+ this.adapt(this.level - 1);
322
+ }
323
+ adapt(level) {
324
+ this.level = level;
325
+ this.changed = performance.now();
326
+ this.needsKey = true;
327
+ this.events.log(`[screen] Windows video profile: ${JSON.stringify(windowsVideoProfile(level, this.request))}`);
328
+ this.captureSerial = this.captureSerial.then(async () => { await this.stopCapture(); this.startCapture(); }).catch(error => this.fail(String(error)));
329
+ }
330
+ stopCapture() {
331
+ this.pending = [];
332
+ const child = this.child;
333
+ this.child = undefined;
334
+ if (!child || child.exitCode !== null || child.signalCode !== null)
335
+ return Promise.resolve();
336
+ return new Promise(resolve => {
337
+ const timer = setTimeout(() => child.kill("SIGKILL"), 1500);
338
+ child.once("close", () => { clearTimeout(timer); resolve(); });
339
+ child.stdin?.end();
340
+ });
341
+ }
342
+ release() {
343
+ if (!this.inputUsed)
344
+ return;
345
+ this.inputUsed = false;
346
+ this.events.input({ t: "up", b: "left" });
347
+ this.events.input({ t: "up", b: "right" });
348
+ }
349
+ fail(reason) {
350
+ if (this.closed)
351
+ return;
352
+ this.events.log(`[screen] Windows video unavailable: ${reason}`);
353
+ this.end();
354
+ this.events.lost();
355
+ }
356
+ end() {
357
+ if (this.closed)
358
+ return;
359
+ this.closed = true;
360
+ this.warmed();
361
+ clearInterval(this.monitor);
362
+ clearTimeout(this.timeout);
363
+ this.release();
364
+ void this.stopCapture();
365
+ void this.pc.close().catch(() => { });
366
+ }
367
+ }
368
+ //# sourceMappingURL=windows-video.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"windows-video.js","sourceRoot":"","sources":["../../../src/windows-video.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAqB,MAAM,oBAAoB,CAAC;AAC9D,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,SAAS,EAAE,SAAS,EAAE,OAAO,EAAE,UAAU,EAAE,cAAc,EAAuB,MAAM,QAAQ,CAAC;AAClJ,OAAO,EAAE,UAAU,EAAoF,MAAM,YAAY,CAAC;AAC1H,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAC7F,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAYpD,MAAM,UAAU,YAAY;IAC1B,MAAM,MAAM,GAAG,aAAa,EAAE,CAAC;IAC/B,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,wBAAwB,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,YAAY,CAAC,CAAC,CAAC;IAC9G,OAAO,IAAI,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;AACrD,CAAC;AAED,MAAM,QAAQ,GAAG;IACf,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE;IAC5C,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE;IAC5C,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE;IAC5C,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE;IAC3C,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE;CAC1C,CAAC;AAEF,MAAM,UAAU,mBAAmB,CAAC,KAAa,EAAE,OAAwD;IACzG,MAAM,OAAO,GAAG,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC,CAAE,CAAC;IAC7E,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,QAAQ,IAAI,IAAI,CAAC,EAAE,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,MAAM,IAAI,EAAE,EAAE,OAAO,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC;IACtI,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,GAAG,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;AACpI,CAAC;AAED,wGAAwG;AACxG,MAAM,OAAO,mBAAmB;IAyCX;IACA;IAzCV,EAAE,GAAG,iBAAiB,WAAW,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;IAC/C,EAAE,CAAoB;IACtB,MAAM,CAAC;IACP,QAAQ,GAAG,IAAI,GAAG,EAA0B,CAAC;IAC7C,KAAK,GAAG,IAAI,gBAAgB,EAAE,CAAC;IACxC,KAAK,CAAgB;IACrB,MAAM,GAAG,KAAK,CAAC;IACf,MAAM,GAAG,KAAK,CAAC;IACf,OAAO,GAAG,KAAK,CAAC;IAChB,OAAO,GAAiD,EAAE,CAAC;IAC3D,QAAQ,GAAG,IAAI,CAAC;IAChB,SAAS,GAAG,KAAK,CAAC;IAClB,KAAK,GAAG,CAAC,CAAC;IACV,OAAO,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;IAC5B,SAAS,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;IAC9B,GAAG,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC,YAAY,EAAE,CAAC;IACpC,SAAS,GAAG,CAAC,CAAC;IACd,SAAS,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC,YAAY,EAAE,CAAC;IAC1C,SAAS,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;IAC9B,UAAU,GAAG,CAAC,CAAC;IACf,SAAS,GAAG,CAAC,CAAC;IACd,OAAO,GAAG,CAAC,CAAC;IACZ,QAAQ,GAAG,CAAC,CAAC;IACb,UAAU,GAAG,CAAC,CAAC;IACf,IAAI,GAAG,CAAC,CAAC;IACT,SAAS,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;IAC9B,YAAY,GAAG,CAAC,CAAC;IACjB,QAAQ,GAAG,CAAC,CAAC;IACb,iBAAiB,GAAG,CAAC,CAAC;IACtB,OAAO,GAAG,EAAE,CAAC;IACb,SAAS,GAAG,KAAK,CAAC;IACT,aAAa,GAAG,IAAI,GAAG,EAAkB,CAAC;IACnD,MAAM,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IAC3B,aAAa,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IAClC,MAAM,GAAG,GAAG,EAAE,GAAE,CAAC,CAAC;IACT,OAAO,GAAG,IAAI,OAAO,CAAO,OAAO,CAAC,EAAE,GAAG,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;IACnE,OAAO,CAAiC;IACxC,OAAO,CAAgC;IAExD,YACmB,OAAmB,EACnB,MAAgH;QADhH,YAAO,GAAP,OAAO,CAAY;QACnB,WAAM,GAAN,MAAM,CAA0G;QAEjI,IAAI,CAAC,EAAE,GAAG,IAAI,iBAAiB,CAAC;YAC9B,UAAU,EAAE,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;YACrF,YAAY,EAAE,YAAY;YAC1B,MAAM,EAAE,EAAE,KAAK,EAAE;oBACf,OAAO,CAAC,EAAE,WAAW,EAAE,EAAE,EAAE,UAAU,EAAE,wEAAwE,EAAE,CAAC;oBAClH,IAAI,qBAAqB,CAAC,EAAE,QAAQ,EAAE,WAAW,EAAE,SAAS,EAAE,KAAK,EAAE,WAAW,EAAE,EAAE,EAAE,UAAU,EAAE,QAAQ,EAAE,CAAC;iBAC9G,EAAE;YACH,gBAAgB,EAAE,EAAE,KAAK,EAAE,CAAC,UAAU,EAAE,EAAE,cAAc,EAAE,CAAC,EAAE;SAC9D,CAAC,CAAC;QACH,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,EAAE,CAAC,cAAc,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,UAAU,EAAE,CAAC,CAAC,MAAM,CAAC;QAChF,IAAI,CAAC,MAAM,CAAC,uBAAuB,CAAC,SAAS,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QAC5F,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,EAAE;YAChC,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,2BAA2B,CAAC,CAAC;YACjE,IAAI,QAAQ,GAAG,CAAC,EAAE,CAAC;gBAAC,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;gBAAC,IAAI,CAAC,YAAY,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;YAAC,CAAC;QACxF,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,EAAE,CAAC,cAAc,CAAC,SAAS,CAAC,SAAS,CAAC,EAAE;YAC3C,IAAI,SAAS,IAAI,CAAC,IAAI,CAAC,MAAM;gBAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,GAAG,SAAS,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QACvF,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,EAAE,CAAC,qBAAqB,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE;YAC9C,IAAI,IAAI,CAAC,MAAM;gBAAE,OAAO;YACxB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,CAAC,EAAE,CAAC,kBAAkB,EAAE,CAAC,CAAC;YACrF,IAAI,CAAC,SAAS,GAAG,KAAK,KAAK,WAAW,CAAC;YACvC,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;gBACnB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;gBACrB,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,+DAA+D,CAAC,CAAC;YACnF,CAAC;iBAAM,IAAI,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,cAAc;gBAAE,IAAI,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;QACtH,CAAC,CAAC,CAAC;QACH,KAAK,MAAM,KAAK,IAAI,CAAC,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,OAAO,CAAC,EAAE,CAAC;YAC5D,MAAM,KAAK,GAAG,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,QAAQ,CAAC;YACxD,MAAM,OAAO,GAAG,IAAI,CAAC,EAAE,CAAC,iBAAiB,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,cAAc,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;YACpH,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;YAClC,IAAI,KAAK,KAAK,OAAO,IAAI,KAAK,KAAK,SAAS;gBAAE,SAAS;YACvD,OAAO,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE;gBACjC,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,MAAM,GAAG,MAAM;oBAAE,OAAO;gBAC3F,IAAI,CAAC;oBACH,MAAM,OAAO,GAAY,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;oBAC1C,IAAI,UAAU,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,OAAO,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,EAAE,CAAC;wBAAC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;wBAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;oBAAC,CAAC;gBACxI,CAAC;gBAAC,MAAM,CAAC,CAAC,sDAAsD,CAAC,CAAC;YACpE,CAAC,CAAC,CAAC;YACH,OAAO,CAAC,YAAY,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,GAAG,IAAI,KAAK,KAAK,QAAQ,IAAI,CAAC,IAAI,CAAC,MAAM;gBAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QACvG,CAAC;QACD,IAAI,CAAC,OAAO,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,IAAI,CAAC,CAAC;QACtD,IAAI,CAAC,OAAO,GAAG,UAAU,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS;YAAE,IAAI,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;IAC9G,CAAC;IAED,KAAK,CAAC,KAAK;QACT,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,aAAa,EAAE;YAAE,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;QAC7F,2FAA2F;QAC3F,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACjH,uFAAuF;QACvF,MAAM,IAAI,CAAC,OAAO,CAAC;QACnB,IAAI,IAAI,CAAC,MAAM;YAAE,OAAO;QACxB,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,WAAW,EAAE,CAAC;QAC1C,IAAI,IAAI,CAAC,MAAM;YAAE,OAAO;QACxB,MAAM,SAAS,GAAG,IAAI,CAAC,EAAE,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC;QACrD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC;QACjD,KAAK,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAC1D,CAAC;IAED,MAAM,CAAC,OAAoB;QACzB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE;YACxC,IAAI,IAAI,CAAC,MAAM;gBAAE,OAAO;YACxB,IAAI,OAAO,CAAC,CAAC,KAAK,YAAY,EAAE,CAAC;gBAC/B,MAAM,IAAI,CAAC,EAAE,CAAC,oBAAoB,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;gBACzE,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,WAAW,EAAE,KAAK,YAAY;oBAAE,IAAI,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC;YAChI,CAAC;;gBAAM,MAAM,IAAI,CAAC,EAAE,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;QAChD,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAC9C,CAAC;IAED,MAAM,CAAC,CAAS,EAAE,CAAS;QACzB,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC5C,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,UAAU,KAAK,MAAM,IAAI,OAAO,CAAC,cAAc,GAAG,IAAI;YAAE,OAAO,KAAK,CAAC;QAC7F,IAAI,CAAC;YAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;YAAC,OAAO,IAAI,CAAC;QAAC,CAAC;QAC9F,MAAM,CAAC;YAAC,OAAO,KAAK,CAAC;QAAC,CAAC;IACzB,CAAC;IAED,KAAK,CAAC,MAAe;QACnB,IAAI,IAAI,CAAC,MAAM,KAAK,MAAM,IAAI,IAAI,CAAC,MAAM;YAAE,OAAO;QAClD,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QACrB,IAAI,MAAM;YAAE,IAAI,CAAC,OAAO,EAAE,CAAC;QAC3B,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM;YAAE,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAC1L,CAAC;IAEO,YAAY;QAClB,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM;YAAE,OAAO;QACvC,MAAM,OAAO,GAAG,mBAAmB,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QAC9D,MAAM,KAAK,GAAG,KAAK,CAAC,aAAa,EAAG,EAAE,CAAC,SAAS,EAAE,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,YAAY,EAAG,CAAC,EAAE;YACpK,WAAW,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;SACnD,CAAC,CAAC;QACH,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QACrB,MAAM,QAAQ,GAAG,IAAI,eAAe,EAAE,CAAC;QACvC,IAAI,MAAM,GAAG,EAAE,EAAE,QAAQ,GAAG,KAAK,CAAC;QAClC,MAAM,OAAO,GAAG,UAAU,CAAC,GAAG,EAAE,GAAG,IAAI,IAAI,CAAC,KAAK,KAAK,KAAK,IAAI,CAAC,QAAQ;YAAE,IAAI,CAAC,IAAI,CAAC,qCAAqC,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;QACvI,KAAK,CAAC,KAAM,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;QACnC,KAAK,CAAC,MAAO,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAa,EAAE,EAAE;YACzC,IAAI,IAAI,CAAC,KAAK,KAAK,KAAK,IAAI,IAAI,CAAC,MAAM;gBAAE,OAAO;YAChD,IAAI,CAAC;gBACH,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE;oBACjC,QAAQ,GAAG,IAAI,CAAC;oBAAC,YAAY,CAAC,OAAO,CAAC,CAAC;oBAAC,IAAI,CAAC,MAAM,EAAE,CAAC;oBACtD,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;gBAC1B,CAAC,CAAC,CAAC;YACL,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;YAAC,CAAC;QAC/C,CAAC,CAAC,CAAC;QACH,KAAK,CAAC,MAAO,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAa,EAAE,EAAE;YACzC,MAAM,IAAI,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC;YAAC,MAAM,GAAG,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC;YACrE,MAAM,OAAO,GAAG,yBAAyB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YAC1D,IAAI,OAAO,EAAE,CAAC;gBAAC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;gBAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,sCAAsC,OAAO,EAAE,CAAC,CAAC;YAAC,CAAC;QAC5G,CAAC,CAAC,CAAC;QACH,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;QACrD,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE;YACtB,YAAY,CAAC,OAAO,CAAC,CAAC;YACtB,IAAI,IAAI,CAAC,KAAK,KAAK,KAAK,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;gBAAC,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC;gBAAC,IAAI,CAAC,IAAI,CAAC,kBAAkB,IAAI,KAAK,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;YAAC,CAAC;QAC9H,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,OAAO,CAAC,IAAY,EAAE,GAAY;QACxC,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;QAC5B,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;YAAC,MAAM,IAAI,GAAG,GAAG,CAAC,CAAC,CAAE,GAAG,EAAE,CAAC;YAAC,IAAI,IAAI,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC;gBAAE,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;QAAC,CAAC;QACpI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAE,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAE,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;YAAE,OAAO;QAC1E,IAAI,CAAC,QAAQ,EAAE,CAAC;QAChB,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,SAAS;YAAE,OAAO;QAC1D,MAAM,EAAE,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;QAC7B,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC;YAClF,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;YAAC,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;YAAC,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;YAAC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QACvH,CAAC;QACD,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,CAAC;QACrC,IAAI,IAAI,CAAC,OAAO;YAAE,OAAO;QACzB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACpB,KAAK,CAAC,KAAK,IAAI,EAAE;YACf,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;gBAC3D,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,EAAG,CAAC;gBACnC,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;YACjD,CAAC;QACH,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IACzF,CAAC;IAEO,KAAK,CAAC,KAAK,CAAC,IAAY,EAAE,GAAY,EAAE,UAAkB;QAChE,IAAI,IAAI,CAAC,QAAQ,IAAI,CAAC,GAAG,EAAE,CAAC;YAAC,IAAI,CAAC,OAAO,EAAE,CAAC;YAAC,OAAO;QAAC,CAAC;QACtD,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;QACtB,MAAM,GAAG,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;QAC9B,IAAI,CAAC,SAAS,GAAG,CAAC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;QACtG,IAAI,CAAC,SAAS,GAAG,UAAU,CAAC;QAC5B,IAAI,CAAC;YACH,wEAAwE;YACxE,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;YAC5B,MAAM,OAAO,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAE,GAAG,EAAE,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YACpL,MAAM,QAAQ,GAAG,YAAY,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YACzF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC;gBAC7C,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM;oBAAE,MAAM;gBACtC,IAAI,WAAW,CAAC,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,CAAC;oBAAC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;oBAAC,IAAI,CAAC,OAAO,EAAE,CAAC;oBAAC,MAAM;gBAAC,CAAC;gBACnF,+EAA+E;gBAC/E,MAAM,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,SAAS,CAAC,IAAI,SAAS,CAAC;oBACnH,WAAW,EAAE,EAAE,EAAE,cAAc,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,MAAM,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,GAAG,MAAM,KAAK,QAAQ,CAAC,MAAM,GAAG,CAAC;iBACpJ,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;YACD,IAAI,CAAC,UAAU,EAAE,CAAC;YAAC,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,MAAM,CAAC;QACnD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QAAC,CAAC;IAC/C,CAAC;IAEO,MAAM;QACZ,IAAI,IAAI,CAAC,MAAM;YAAE,OAAO;QACxB,MAAM,GAAG,GAAG,WAAW,CAAC,GAAG,EAAE,EAAE,OAAO,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC;QACvE,MAAM,OAAO,GAAG,mBAAmB,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QAC9D,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC;QAC7D,IAAI,OAAO,CAAC,GAAG,CAAC,4BAA4B,KAAK,GAAG;YAAE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,0BAA0B,IAAI,CAAC,SAAS,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,EAAE,IAAI,CAAC,UAAU,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE,GAAG,EAAE,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,EAAE,CAAC,CAAC;QACzR,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC;QAChD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,GAAG,CAAC,GAAG,OAAO,CAAC,EAAE,SAAS,EAAE,OAAO,CAAC,GAAG,EAAE,aAAa,EAAE,OAAO,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;QACrP,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;QAAC,IAAI,CAAC,SAAS,GAAG,GAAG,CAAC;QAC3D,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,MAAM;YAAE,OAAO;QAC3C,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,GAAG,CAAC,IAAI,GAAG,GAAG,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;QACzE,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,SAAS,CAAC;QAC5D,kFAAkF;QAClF,iGAAiG;QACjG,MAAM,QAAQ,GAAG,IAAI,IAAI,IAAI,CAAC,cAAc,CAAC,IAAI,KAAK,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC;QAChF,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,QAAQ,IAAI,QAAQ,IAAI,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,OAAO,GAAG,IAAI,IAAI,WAAW,GAAG,IAAI,CAAC,QAAQ,GAAG,GAAG,CAAC,CAAC;QAC1J,IAAI,CAAC,iBAAiB,GAAG,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,iBAAiB,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACnE,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC;QACjB,IAAI,QAAQ,EAAE,CAAC;YACb,IAAI,CAAC,SAAS,GAAG,GAAG,CAAC;YACrB,IAAI,IAAI,CAAC,iBAAiB,IAAI,CAAC,IAAI,GAAG,GAAG,IAAI,CAAC,OAAO,GAAG,MAAM,IAAI,IAAI,CAAC,KAAK,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC;gBAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;QACjI,CAAC;aAAM,IAAI,QAAQ,IAAI,IAAI,CAAC,KAAK,GAAG,CAAC,IAAI,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAE,CAAC,OAAO,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,CAAC,SAAS,GAAG,MAAM,IAAI,GAAG,GAAG,IAAI,CAAC,OAAO,GAAG,MAAM;YAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;IAC/L,CAAC;IAEO,KAAK,CAAC,KAAa;QACzB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QAAC,IAAI,CAAC,OAAO,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;QAAC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QAC3E,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,mCAAmC,IAAI,CAAC,SAAS,CAAC,mBAAmB,CAAC,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC;QAC/G,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACxJ,CAAC;IAEO,WAAW;QACjB,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;QAClB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QAAC,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC;QACjD,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,QAAQ,KAAK,IAAI,IAAI,KAAK,CAAC,UAAU,KAAK,IAAI;YAAE,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;QAC7F,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE;YAC3B,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,CAAC,CAAC;YAC5D,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;YAC/D,KAAK,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC;QACrB,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,OAAO;QACb,IAAI,CAAC,IAAI,CAAC,SAAS;YAAE,OAAO;QAC5B,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;QACvB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;QAC1C,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;IAC7C,CAAC;IAEO,IAAI,CAAC,MAAc;QACzB,IAAI,IAAI,CAAC,MAAM;YAAE,OAAO;QACxB,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,uCAAuC,MAAM,EAAE,CAAC,CAAC;QACjE,IAAI,CAAC,GAAG,EAAE,CAAC;QAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;IACjC,CAAC;IAED,GAAG;QACD,IAAI,IAAI,CAAC,MAAM;YAAE,OAAO;QACxB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;QACnB,IAAI,CAAC,MAAM,EAAE,CAAC;QACd,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACxD,IAAI,CAAC,OAAO,EAAE,CAAC;QACf,KAAK,IAAI,CAAC,WAAW,EAAE,CAAC;QACxB,KAAK,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;IACvC,CAAC;CACF"}
@@ -1,7 +1,7 @@
1
1
  import { execFile } from "node:child_process";
2
2
  import { randomBytes } from "node:crypto";
3
3
  import { copyFileSync, existsSync, mkdirSync, readdirSync, realpathSync, rmSync, statSync } from "node:fs";
4
- import { basename, join, relative } from "node:path";
4
+ import { basename, join, relative, normalize } from "node:path";
5
5
  import { promisify } from "node:util";
6
6
  import { RpcError } from "@linkshell/wire";
7
7
  // Git worktrees for sessions: a session that shouldn't touch the project's
@@ -15,7 +15,7 @@ async function git(cwd, args, timeout = 60_000) {
15
15
  /** What git says about a directory; undefined when it isn't in a repository (or git is missing). */
16
16
  export async function gitInfo(path) {
17
17
  try {
18
- const root = await git(path, ["rev-parse", "--show-toplevel"]);
18
+ const root = normalize(await git(path, ["rev-parse", "--show-toplevel"]));
19
19
  const branch = await git(path, ["symbolic-ref", "--short", "-q", "HEAD"]).catch(() => "");
20
20
  const head = await git(path, ["rev-parse", "--short", "HEAD"]).catch(() => "");
21
21
  const status = await git(path, ["status", "--porcelain"]);
@@ -1 +1 @@
1
- {"version":3,"file":"worktrees.js","sourceRoot":"","sources":["../../../src/worktrees.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"worktrees.js","sourceRoot":"","sources":["../../../src/worktrees.ts"],"names":[],"mappings":"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"}