autodev-cli 1.4.48 → 1.4.51

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.
@@ -43,6 +43,12 @@ const readline = __importStar(require("readline"));
43
43
  const url_1 = require("url");
44
44
  const settingsLoader_1 = require("../core/settingsLoader");
45
45
  const officeSocket_1 = require("../officeSocket");
46
+ const fileBrowser_1 = require("../fileBrowser");
47
+ const gitRequest_1 = require("../git/gitRequest");
48
+ const manager_1 = require("../vnc/manager");
49
+ const manager_2 = require("../rdp/manager");
50
+ const projectMcp_1 = require("../core/projectMcp");
51
+ const configManager_1 = require("../configManager");
46
52
  const version_1 = require("../version");
47
53
  /**
48
54
  * `autodev mcp-operate` — run a local stdio MCP server that lets a pure MCP
@@ -162,11 +168,24 @@ function mcpOperateCommand(program) {
162
168
  .option('--url <url>', 'Operator MCP URL (…/api/office-mcp). Default: derived from the workspace binding.')
163
169
  .option('--key <apiKey>', 'The character api_key (Bearer). Default: the workspace serverApiKey.')
164
170
  .option('--no-socket', 'Do not open the presence WebSocket (stay on poll-based presence only).')
171
+ .option('--file-browser', 'Serve the office file browser for this MCP-only agent (read/write files in the workspace over the office file browser).')
172
+ .option('--git', 'Serve the office git panel for this MCP-only agent (status/diff/stage/commit/branch in the workspace over the office git panel).')
173
+ .option('--vnc', 'Serve office VNC remote-desktop sessions for this MCP-only agent (input forwarding + framebuffer streaming).')
174
+ .option('--rdp', 'Serve office RDP remote-desktop sessions for this MCP-only agent (input forwarding + framebuffer streaming).')
175
+ .option('--mcp-update', 'Honor mcp_update frames: sync remote-supplied MCP config into the workspace (relaunch to pick up spawn changes).')
165
176
  .action(async (workspacePath, opts) => {
166
177
  const cwd = workspacePath ? path.resolve(workspacePath) : process.cwd();
167
- const settings = (0, settingsLoader_1.loadSettingsForRoot)(cwd);
178
+ let settings = (0, settingsLoader_1.loadSettingsForRoot)(cwd);
168
179
  const endpoint = opts.url || officeMcpUrl(settings.serverBaseUrl);
169
180
  const key = opts.key || settings.serverApiKey || '';
181
+ // Feature gates: serve a capability when explicitly requested via flag OR
182
+ // when the bound workspace has it enabled (same flags a loop agent honours
183
+ // via settings). Mutable so a live mcp_update can refresh them from disk.
184
+ let fileBrowserEnabled = opts.fileBrowser === true || settings.enableFileBrowser === true;
185
+ let gitEnabled = opts.git === true || settings.gitEnabled === true;
186
+ let vncEnabled = opts.vnc === true || settings.vncEnabled === true;
187
+ let rdpEnabled = opts.rdp === true || settings.rdpEnabled === true;
188
+ let mcpUpdateEnabled = opts.mcpUpdate === true || settings.mcpUpdateEnabled === true;
170
189
  if (!endpoint || !key) {
171
190
  process.stderr.write('autodev mcp-operate: need --url and --key (or run inside a workspace bound to an office).\n');
172
191
  process.exit(1);
@@ -212,6 +231,72 @@ function mcpOperateCommand(program) {
212
231
  // connect, the stdio bridge keeps working and presence falls back to the
213
232
  // server's poll heuristic.
214
233
  let socket = null;
234
+ // ── VNC / RDP remote-desktop session managers ────────────────────────────
235
+ // Reuse the exact same session machinery the autodev loop uses. They reply
236
+ // to the office over the presence socket. Gated by --vnc/--rdp (or the
237
+ // bound workspace's vncEnabled/rdpEnabled), mirroring --file-browser.
238
+ const logErr = (m) => { process.stderr.write(m + '\n'); };
239
+ const vncManager = new manager_1.VncSessionManager((f) => socket?.sendFrame(f), logErr);
240
+ const rdpManager = new manager_2.RdpSessionManager((f) => socket?.sendFrame(f), logErr);
241
+ const applyRemoteDesktopSettings = () => {
242
+ vncManager.setEnabled(vncEnabled);
243
+ vncManager.setPassword(settings.vncPassword || undefined);
244
+ rdpManager.setEnabled(rdpEnabled);
245
+ rdpManager.setSettings({
246
+ host: settings.rdpHost || undefined,
247
+ port: settings.rdpPort ?? 3389,
248
+ username: settings.rdpUsername || undefined,
249
+ password: settings.rdpPassword || undefined,
250
+ domain: settings.rdpDomain || undefined,
251
+ guacWsUrl: settings.rdpGuacWsUrl || undefined,
252
+ });
253
+ };
254
+ applyRemoteDesktopSettings();
255
+ // Re-read the workspace settings from disk and recompute the mutable
256
+ // feature gates (an explicit CLI flag stays sticky — it can enable a
257
+ // capability the settings file leaves off). Used on live mcp_update, the
258
+ // bridge analog of the loop re-reading everything on its restart.
259
+ const reloadBridgeSettings = () => {
260
+ settings = (0, settingsLoader_1.loadSettingsForRoot)(cwd);
261
+ fileBrowserEnabled = opts.fileBrowser === true || settings.enableFileBrowser === true;
262
+ gitEnabled = opts.git === true || settings.gitEnabled === true;
263
+ vncEnabled = opts.vnc === true || settings.vncEnabled === true;
264
+ rdpEnabled = opts.rdp === true || settings.rdpEnabled === true;
265
+ mcpUpdateEnabled = opts.mcpUpdate === true || settings.mcpUpdateEnabled === true;
266
+ applyRemoteDesktopSettings();
267
+ };
268
+ // ── Live MCP-config reload (mcp_update frame) ────────────────────────────
269
+ // The loop restarts to pick up a new .mcp.json; a bridge can't restart, so
270
+ // it syncs the config to disk (gated by mcpUpdateEnabled) and logs that a
271
+ // relaunch is needed to spawn any newly-added stdio MCP servers. It also
272
+ // refreshes the bridge's own feature gates from disk (fileBrowser/git/…).
273
+ const handleMcpUpdate = (entries) => {
274
+ // Refresh feature gates from disk first — mirrors the loop re-reading
275
+ // settings on restart (a settings edit often accompanies an mcp_update).
276
+ reloadBridgeSettings();
277
+ if (!mcpUpdateEnabled) {
278
+ logErr('🔒 mcp_update ignored — mcpUpdateEnabled is off (set it in .autodev/settings.json or pass --mcp-update to allow)');
279
+ return;
280
+ }
281
+ logErr('🔧 mcp_update received — validating and writing .mcp.json…');
282
+ const { safe, rejected } = (0, projectMcp_1.sanitizeRemoteMcpEntries)(entries);
283
+ if (rejected.length) {
284
+ logErr(`⚠️ mcp_update dropped ${rejected.length} unsafe entr${rejected.length === 1 ? 'y' : 'ies'}: ${rejected.join(', ')}`);
285
+ }
286
+ if (Object.keys(safe).length === 0) {
287
+ logErr('⚠️ mcp_update had no safe entries — not writing config.');
288
+ return;
289
+ }
290
+ try {
291
+ (0, projectMcp_1.saveProjectUserMcp)(cwd, safe);
292
+ configManager_1.ConfigManager.syncProjectMcpServers(cwd, logErr);
293
+ void configManager_1.ConfigManager.reportProjectMcp(cwd, logErr);
294
+ logErr('✅ MCP config synced to .mcp.json, opencode.json, .vscode/mcp.json — relaunch `autodev mcp-operate` to spawn any newly-added MCP servers.');
295
+ }
296
+ catch (err) {
297
+ logErr(`⚠️ MCP update failed: ${err instanceof Error ? err.message : String(err)}`);
298
+ }
299
+ };
215
300
  const startSocket = async () => {
216
301
  if (opts.socket === false) {
217
302
  return;
@@ -239,8 +324,79 @@ function mcpOperateCommand(program) {
239
324
  }
240
325
  socket = new officeSocket_1.OfficeSocket(wsUrl, key, slug, {
241
326
  log: (l) => process.stderr.write(l + '\n'),
242
- meta: { provider: 'mcp-operator', cliVersion: version_1.CLI_VERSION, fileBrowserEnabled: false },
327
+ meta: {
328
+ provider: 'mcp-operator', cliVersion: version_1.CLI_VERSION,
329
+ fileBrowserEnabled, gitEnabled, vncEnabled, rdpEnabled,
330
+ // Announce the desktop host/port too (parity with the loop's meta) so
331
+ // the office persists the real target instead of defaulting to :5900.
332
+ // Only when enabled — an off feature must not pin a stale port.
333
+ vncHost: vncEnabled ? (settings.vncHost || undefined) : undefined,
334
+ vncPort: vncEnabled ? (settings.vncPort ?? 5900) : undefined,
335
+ rdpHost: rdpEnabled ? (settings.rdpHost || undefined) : undefined,
336
+ rdpPort: rdpEnabled ? (settings.rdpPort ?? 3389) : undefined,
337
+ },
243
338
  onMessage: (msg) => {
339
+ const msgType = msg['type'];
340
+ // File-browser control frame from the office UI. Handle it and stop —
341
+ // it is not an office event to surface via describePush/notifications.
342
+ if (msgType === 'fb_request') {
343
+ const requestId = msg['requestId'];
344
+ const action = msg['action'];
345
+ if (requestId && action) {
346
+ (0, fileBrowser_1.handleFbRequest)({
347
+ root: cwd,
348
+ enabled: fileBrowserEnabled,
349
+ requestId,
350
+ action,
351
+ relPath: msg['path'] ?? '',
352
+ content: msg['content'],
353
+ newPath: msg['newPath'],
354
+ query: msg['query'],
355
+ sendFrame: (f) => socket?.sendFrame(f),
356
+ log: (m) => process.stderr.write(m + '\n'),
357
+ });
358
+ }
359
+ return;
360
+ }
361
+ // Git-panel control frame from the office UI — same additive,
362
+ // early-return handling as fb_request. Gated by gitEnabled.
363
+ if (msgType === 'git_request') {
364
+ const requestId = msg['requestId'];
365
+ const action = msg['action'];
366
+ if (requestId && action) {
367
+ (0, gitRequest_1.handleGitRequest)({
368
+ root: cwd,
369
+ enabled: gitEnabled,
370
+ requestId,
371
+ action,
372
+ filePath: msg['path'],
373
+ staged: msg['staged'],
374
+ message: msg['message'],
375
+ branch: msg['branch'],
376
+ hash: msg['hash'],
377
+ sendFrame: (f) => socket?.sendFrame(f),
378
+ log: (m) => process.stderr.write(m + '\n'),
379
+ });
380
+ }
381
+ return;
382
+ }
383
+ // VNC / RDP remote-desktop control frames — delegated to the shared
384
+ // session managers (same machinery as the loop). Each returns true
385
+ // when it consumed the frame; consumed frames are not office events.
386
+ if (msgType && vncManager.handleFrame(msgType, msg)) {
387
+ return;
388
+ }
389
+ if (msgType && rdpManager.handleFrame(msgType, msg)) {
390
+ return;
391
+ }
392
+ // Live MCP-config reload frame from the office.
393
+ if (msgType === 'mcp_update') {
394
+ const entries = msg['mcpServers'];
395
+ if (entries && typeof entries === 'object') {
396
+ handleMcpUpdate(entries);
397
+ }
398
+ return;
399
+ }
244
400
  const notice = describePush(msg);
245
401
  if (notice) {
246
402
  // Buffer for wait_for_events (the reliable real-time path)…
@@ -259,6 +415,8 @@ function mcpOperateCommand(program) {
259
415
  let closed = false;
260
416
  const maybeExit = () => {
261
417
  if (closed && inflight === 0) {
418
+ vncManager.stopAll();
419
+ rdpManager.stopAll();
262
420
  socket?.destroy();
263
421
  // Flush any buffered stdout (e.g. the final reply on a pipe) before
264
422
  // exiting, so the last frame is never clipped.
@@ -1 +1 @@
1
- {"version":3,"file":"mcpOperate.js","sourceRoot":"","sources":["../../src/commands/mcpOperate.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mcpOperate.js","sourceRoot":"","sources":["../../src/commands/mcpOperate.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA8CA,kCAQC;AAGD,oCA8BC;AAoCD,8CAoTC;AA/aD,2CAA6B;AAC7B,6CAA+B;AAC/B,2CAA6B;AAC7B,mDAAqC;AACrC,6BAA0B;AAE1B,2DAA6D;AAC7D,kDAA+C;AAC/C,gDAAiD;AACjD,kDAAqD;AACrD,4CAAmD;AACnD,4CAAmD;AACnD,mDAAkF;AAClF,oDAAiD;AACjD,wCAAyC;AAEzC;;;;;;;;;;;;;;GAcG;AAEH,0EAA0E;AAC1E,SAAS,YAAY,CAAC,aAAiC;IACrD,IAAI,CAAC;QACH,MAAM,CAAC,GAAG,IAAI,SAAG,CAAC,aAAa,IAAI,EAAE,CAAC,CAAC;QACvC,yEAAyE;QACzE,kEAAkE;QAClE,MAAM,KAAK,GAAG,CAAC,CAAC,QAAQ,KAAK,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,KAAK,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;QAC7F,OAAO,GAAG,KAAK,KAAK,CAAC,CAAC,IAAI,iBAAiB,CAAC;IAC9C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED,+EAA+E;AAC/E,SAAgB,WAAW,CAAC,QAAgB;IAC1C,IAAI,CAAC;QACH,MAAM,CAAC,GAAG,IAAI,SAAG,CAAC,QAAQ,CAAC,CAAC;QAC5B,MAAM,KAAK,GAAG,CAAC,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;QAC7F,OAAO,GAAG,KAAK,KAAK,CAAC,CAAC,IAAI,KAAK,CAAC;IAClC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED,gFAAgF;AAChF,SAAgB,YAAY,CAAC,GAA4B;IACvD,MAAM,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC;IACzB,IAAI,IAAI,KAAK,UAAU,EAAE,CAAC;QACxB,MAAM,IAAI,GAAI,GAAG,CAAC,MAAM,CAA+C,EAAE,IAAI,CAAC;QAC9E,OAAO,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,aAAa,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,oBAAoB,CAAC;IACxE,CAAC;IACD,mEAAmE;IACnE,6EAA6E;IAC7E,+EAA+E;IAC/E,sCAAsC;IACtC,IAAI,IAAI,KAAK,cAAc,EAAE,CAAC;QAC5B,MAAM,IAAI,GAAI,GAAG,CAAC,MAAM,CAAY,IAAI,EAAE,CAAC;QAC3C,MAAM,IAAI,GAAI,GAAG,CAAC,UAAU,CAAY,IAAK,GAAG,CAAC,MAAM,CAAY,IAAI,YAAY,CAAC;QACpF,OAAO,IAAI,IAAI,GAAG,IAAI,0BAA0B,CAAC;IACnD,CAAC;IACD,qGAAqG;IACrG,IAAI,IAAI,KAAK,YAAY,EAAE,CAAC;QAC1B,MAAM,IAAI,GAAI,GAAG,CAAC,MAAM,CAAyC,IAAI,GAAG,CAAC;QACzE,MAAM,GAAG,GAAI,IAAI,CAAC,WAAW,CAAY,IAAK,GAAG,CAAC,WAAW,CAAY,IAAI,YAAY,CAAC;QAC1F,MAAM,IAAI,GAAI,IAAI,CAAC,UAAU,CAAY,IAAK,GAAG,CAAC,UAAU,CAAY,IAAI,EAAE,CAAC;QAC/E,MAAM,EAAE,GAAI,IAAI,CAAC,WAAW,CAAY,IAAK,GAAG,CAAC,WAAW,CAAY,IAAI,UAAU,CAAC;QACvF,OAAO,MAAM,GAAG,KAAK,IAAI,IAAI,EAAE,EAAE,CAAC;IACpC,CAAC;IACD,iFAAiF;IACjF,MAAM,IAAI,GAAG,GAAG,CAAC,MAAM,CAA4E,CAAC;IACpG,IAAI,IAAI,EAAE,QAAQ,EAAE,CAAC;QACnB,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC;QACtC,OAAO,IAAI,CAAC,CAAC,CAAC,gBAAgB,IAAI,EAAE,CAAC,CAAC,CAAC,yBAAyB,CAAC;IACnE,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,kFAAkF;AAClF,SAAS,KAAK,CAAC,QAAgB,EAAE,GAAW,EAAE,IAAa;IACzD,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,MAAM,CAAC,GAAG,IAAI,SAAG,CAAC,QAAQ,CAAC,CAAC;QAC5B,MAAM,GAAG,GAAG,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;QACnD,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,CAAC;QACvD,MAAM,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,CAAC,EAAE;YACzB,MAAM,EAAE,MAAM;YACd,OAAO,EAAE;gBACP,cAAc,EAAE,kBAAkB;gBAClC,QAAQ,EAAE,kBAAkB;gBAC5B,eAAe,EAAE,UAAU,GAAG,EAAE;gBAChC,gBAAgB,EAAE,IAAI,CAAC,MAAM;aAC9B;SACF,EAAE,CAAC,GAAG,EAAE,EAAE;YACT,IAAI,CAAC,GAAG,EAAE,CAAC;YACX,GAAG,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACnC,GAAG,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE;gBACjB,4DAA4D;gBAC5D,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC;oBAAC,OAAO,CAAC,EAAE,CAAC,CAAC;oBAAC,OAAO;gBAAC,CAAC;gBACvC,IAAI,CAAC;oBAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAA4B,CAAC,CAAC;gBAAC,CAAC;gBAC1D,OAAO,CAAC,EAAE,CAAC;oBAAC,MAAM,CAAC,CAAC,CAAC,CAAC;gBAAC,CAAC;YAC1B,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QACH,qEAAqE;QACrE,mEAAmE;QACnE,kEAAkE;QAClE,GAAG,CAAC,UAAU,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC,CAAC,CAAC;QAC5F,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QACxB,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAChB,GAAG,CAAC,GAAG,EAAE,CAAC;IACZ,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAgB,iBAAiB,CAAC,OAAgB;IAChD,OAAO;SACJ,OAAO,CAAC,oBAAoB,CAAC;SAC7B,WAAW,CAAC,sLAAsL,CAAC;SACnM,MAAM,CAAC,aAAa,EAAE,mFAAmF,CAAC;SAC1G,MAAM,CAAC,gBAAgB,EAAE,sEAAsE,CAAC;SAChG,MAAM,CAAC,aAAa,EAAE,wEAAwE,CAAC;SAC/F,MAAM,CAAC,gBAAgB,EAAE,yHAAyH,CAAC;SACnJ,MAAM,CAAC,OAAO,EAAE,kIAAkI,CAAC;SACnJ,MAAM,CAAC,OAAO,EAAE,8GAA8G,CAAC;SAC/H,MAAM,CAAC,OAAO,EAAE,8GAA8G,CAAC;SAC/H,MAAM,CAAC,cAAc,EAAE,kHAAkH,CAAC;SAC1I,MAAM,CAAC,KAAK,EAAE,aAAiC,EAAE,IAA+I,EAAE,EAAE;QACnM,MAAM,GAAG,GAAG,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC;QACxE,IAAI,QAAQ,GAAG,IAAA,oCAAmB,EAAC,GAAG,CAAC,CAAC;QACxC,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,IAAI,YAAY,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;QAClE,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI,QAAQ,CAAC,YAAY,IAAI,EAAE,CAAC;QACpD,0EAA0E;QAC1E,2EAA2E;QAC3E,0EAA0E;QAC1E,IAAI,kBAAkB,GAAG,IAAI,CAAC,WAAW,KAAK,IAAI,IAAI,QAAQ,CAAC,iBAAiB,KAAK,IAAI,CAAC;QAC1F,IAAI,UAAU,GAAW,IAAI,CAAC,GAAG,KAAK,IAAI,IAAY,QAAQ,CAAC,UAAU,KAAK,IAAI,CAAC;QACnF,IAAI,UAAU,GAAW,IAAI,CAAC,GAAG,KAAK,IAAI,IAAY,QAAQ,CAAC,UAAU,KAAK,IAAI,CAAC;QACnF,IAAI,UAAU,GAAW,IAAI,CAAC,GAAG,KAAK,IAAI,IAAY,QAAQ,CAAC,UAAU,KAAK,IAAI,CAAC;QACnF,IAAI,gBAAgB,GAAK,IAAI,CAAC,SAAS,KAAK,IAAI,IAAM,QAAQ,CAAC,gBAAgB,KAAK,IAAI,CAAC;QAEzF,IAAI,CAAC,QAAQ,IAAI,CAAC,GAAG,EAAE,CAAC;YACtB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,6FAA6F,CAAC,CAAC;YACpH,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAChB,OAAO;QACT,CAAC;QACD,gFAAgF;QAChF,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,yBAAyB,QAAQ,IAAI,CAAC,CAAC;QAE5D,MAAM,IAAI,GAAG,CAAC,GAAY,EAAQ,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QAC3F,MAAM,EAAE,GAAG,QAAQ,CAAC,eAAe,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;QAE/E,4EAA4E;QAC5E,wEAAwE;QACxE,6EAA6E;QAC7E,sEAAsE;QACtE,yEAAyE;QACzE,mBAAmB;QACnB,MAAM,SAAS,GAAG,GAAG,CAAC;QACtB,MAAM,UAAU,GAAa,EAAE,CAAC;QAChC,IAAI,WAAW,GAAwB,IAAI,CAAC;QAC5C,MAAM,SAAS,GAAG,CAAC,IAAY,EAAQ,EAAE;YACvC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACtB,IAAI,UAAU,CAAC,MAAM,GAAG,SAAS,EAAE,CAAC;gBAAC,UAAU,CAAC,MAAM,CAAC,CAAC,EAAE,UAAU,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;YAAC,CAAC;YAC3F,IAAI,WAAW,EAAE,CAAC;gBAAC,MAAM,CAAC,GAAG,WAAW,CAAC;gBAAC,WAAW,GAAG,IAAI,CAAC;gBAAC,CAAC,EAAE,CAAC;YAAC,CAAC;QACtE,CAAC,CAAC;QACF,MAAM,YAAY,GAAG,CAAC,EAAU,EAAiB,EAAE,CAAC,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;YAC1E,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE,GAAG,WAAW,GAAG,IAAI,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACvE,WAAW,GAAG,GAAG,EAAE,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC;QAC1D,CAAC,CAAC,CAAC;QACH,MAAM,SAAS,GAAG;YAChB,IAAI,EAAE,iBAAiB;YACvB,WAAW,EAAE,qRAAqR;YAClS,WAAW,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE,eAAe,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,WAAW,EAAE,8DAA8D,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAc,EAAE;SAC7L,CAAC;QAEF,4EAA4E;QAC5E,uEAAuE;QACvE,gEAAgE;QAChE,sEAAsE;QACtE,yEAAyE;QACzE,2BAA2B;QAC3B,IAAI,MAAM,GAAwB,IAAI,CAAC;QAEvC,4EAA4E;QAC5E,2EAA2E;QAC3E,uEAAuE;QACvE,sEAAsE;QACtE,MAAM,MAAM,GAAG,CAAC,CAAS,EAAQ,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QACxE,MAAM,UAAU,GAAG,IAAI,2BAAiB,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;QAC9E,MAAM,UAAU,GAAG,IAAI,2BAAiB,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;QAC9E,MAAM,0BAA0B,GAAG,GAAS,EAAE;YAC5C,UAAU,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;YAClC,UAAU,CAAC,WAAW,CAAC,QAAQ,CAAC,WAAW,IAAI,SAAS,CAAC,CAAC;YAC1D,UAAU,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;YAClC,UAAU,CAAC,WAAW,CAAC;gBACrB,IAAI,EAAO,QAAQ,CAAC,OAAO,IAAS,SAAS;gBAC7C,IAAI,EAAO,QAAQ,CAAC,OAAO,IAAS,IAAI;gBACxC,QAAQ,EAAG,QAAQ,CAAC,WAAW,IAAK,SAAS;gBAC7C,QAAQ,EAAG,QAAQ,CAAC,WAAW,IAAK,SAAS;gBAC7C,MAAM,EAAK,QAAQ,CAAC,SAAS,IAAO,SAAS;gBAC7C,SAAS,EAAE,QAAQ,CAAC,YAAY,IAAI,SAAS;aAC9C,CAAC,CAAC;QACL,CAAC,CAAC;QACF,0BAA0B,EAAE,CAAC;QAE7B,qEAAqE;QACrE,qEAAqE;QACrE,yEAAyE;QACzE,kEAAkE;QAClE,MAAM,oBAAoB,GAAG,GAAS,EAAE;YACtC,QAAQ,GAAG,IAAA,oCAAmB,EAAC,GAAG,CAAC,CAAC;YACpC,kBAAkB,GAAG,IAAI,CAAC,WAAW,KAAK,IAAI,IAAI,QAAQ,CAAC,iBAAiB,KAAK,IAAI,CAAC;YACtF,UAAU,GAAW,IAAI,CAAC,GAAG,KAAK,IAAI,IAAY,QAAQ,CAAC,UAAU,KAAK,IAAI,CAAC;YAC/E,UAAU,GAAW,IAAI,CAAC,GAAG,KAAK,IAAI,IAAY,QAAQ,CAAC,UAAU,KAAK,IAAI,CAAC;YAC/E,UAAU,GAAW,IAAI,CAAC,GAAG,KAAK,IAAI,IAAY,QAAQ,CAAC,UAAU,KAAK,IAAI,CAAC;YAC/E,gBAAgB,GAAK,IAAI,CAAC,SAAS,KAAK,IAAI,IAAM,QAAQ,CAAC,gBAAgB,KAAK,IAAI,CAAC;YACrF,0BAA0B,EAAE,CAAC;QAC/B,CAAC,CAAC;QAEF,4EAA4E;QAC5E,2EAA2E;QAC3E,0EAA0E;QAC1E,yEAAyE;QACzE,0EAA0E;QAC1E,MAAM,eAAe,GAAG,CAAC,OAAgC,EAAQ,EAAE;YACjE,sEAAsE;YACtE,yEAAyE;YACzE,oBAAoB,EAAE,CAAC;YACvB,IAAI,CAAC,gBAAgB,EAAE,CAAC;gBACtB,MAAM,CAAC,kHAAkH,CAAC,CAAC;gBAC3H,OAAO;YACT,CAAC;YACD,MAAM,CAAC,4DAA4D,CAAC,CAAC;YACrE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,IAAA,qCAAwB,EAAC,OAAO,CAAC,CAAC;YAC7D,IAAI,QAAQ,CAAC,MAAM,EAAE,CAAC;gBACpB,MAAM,CAAC,yBAAyB,QAAQ,CAAC,MAAM,eAAe,QAAQ,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,KAAK,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAC/H,CAAC;YACD,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACnC,MAAM,CAAC,yDAAyD,CAAC,CAAC;gBAClE,OAAO;YACT,CAAC;YACD,IAAI,CAAC;gBACH,IAAA,+BAAkB,EAAC,GAAG,EAAE,IAAI,CAAC,CAAC;gBAC9B,6BAAa,CAAC,qBAAqB,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;gBACjD,KAAK,6BAAa,CAAC,gBAAgB,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;gBACjD,MAAM,CAAC,0IAA0I,CAAC,CAAC;YACrJ,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,MAAM,CAAC,yBAAyB,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YACtF,CAAC;QACH,CAAC,CAAC;QAEF,MAAM,WAAW,GAAG,KAAK,IAAmB,EAAE;YAC5C,IAAI,IAAI,CAAC,MAAM,KAAK,KAAK,EAAE,CAAC;gBAAC,OAAO;YAAC,CAAC;YACtC,MAAM,KAAK,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC;YACpC,IAAI,CAAC,KAAK,EAAE,CAAC;gBAAC,OAAO;YAAC,CAAC;YACvB,sEAAsE;YACtE,+DAA+D;YAC/D,4EAA4E;YAC5E,qDAAqD;YACrD,IAAI,IAAI,GAAG,CAAC,QAAQ,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;YAC/C,IAAI,CAAC,IAAI,EAAE,CAAC;gBACV,IAAI,CAAC;oBACH,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,QAAQ,EAAE,GAAG,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,aAAa,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;oBAC/I,MAAM,IAAI,GAAG,CAAC,CAAE,GAAG,CAAC,QAAQ,CAAwD,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;oBACjH,IAAI,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,+BAA+B,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;gBAClE,CAAC;gBAAC,MAAM,CAAC,CAAC,uDAAuD,CAAC,CAAC;YACrE,CAAC;YACD,IAAI,CAAC,IAAI,EAAE,CAAC;gBAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,2EAA2E,CAAC,CAAC;gBAAC,OAAO;YAAC,CAAC;YAEzH,MAAM,GAAG,IAAI,2BAAY,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE;gBAC1C,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC;gBAC1C,IAAI,EAAE;oBACJ,QAAQ,EAAE,cAAc,EAAE,UAAU,EAAE,qBAAW;oBACjD,kBAAkB,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;oBACtD,sEAAsE;oBACtE,sEAAsE;oBACtE,gEAAgE;oBAChE,OAAO,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,IAAI,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS;oBACjE,OAAO,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS;oBAC5D,OAAO,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,IAAI,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS;oBACjE,OAAO,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS;iBAC7D;gBACD,SAAS,EAAE,CAAC,GAAG,EAAE,EAAE;oBACjB,MAAM,OAAO,GAAG,GAAG,CAAC,MAAM,CAAuB,CAAC;oBAElD,sEAAsE;oBACtE,uEAAuE;oBACvE,IAAI,OAAO,KAAK,YAAY,EAAE,CAAC;wBAC7B,MAAM,SAAS,GAAG,GAAG,CAAC,WAAW,CAAuB,CAAC;wBACzD,MAAM,MAAM,GAAM,GAAG,CAAC,QAAQ,CAA0B,CAAC;wBACzD,IAAI,SAAS,IAAI,MAAM,EAAE,CAAC;4BACxB,IAAA,6BAAe,EAAC;gCACd,IAAI,EAAE,GAAG;gCACT,OAAO,EAAE,kBAAkB;gCAC3B,SAAS;gCACT,MAAM;gCACN,OAAO,EAAG,GAAG,CAAC,MAAM,CAAwB,IAAI,EAAE;gCAClD,OAAO,EAAE,GAAG,CAAC,SAAS,CAAuB;gCAC7C,OAAO,EAAE,GAAG,CAAC,SAAS,CAAuB;gCAC7C,KAAK,EAAI,GAAG,CAAC,OAAO,CAAyB;gCAC7C,SAAS,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC;gCACtC,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC;6BAC3C,CAAC,CAAC;wBACL,CAAC;wBACD,OAAO;oBACT,CAAC;oBAED,8DAA8D;oBAC9D,4DAA4D;oBAC5D,IAAI,OAAO,KAAK,aAAa,EAAE,CAAC;wBAC9B,MAAM,SAAS,GAAG,GAAG,CAAC,WAAW,CAAuB,CAAC;wBACzD,MAAM,MAAM,GAAM,GAAG,CAAC,QAAQ,CAA0B,CAAC;wBACzD,IAAI,SAAS,IAAI,MAAM,EAAE,CAAC;4BACxB,IAAA,6BAAgB,EAAC;gCACf,IAAI,EAAE,GAAG;gCACT,OAAO,EAAE,UAAU;gCACnB,SAAS;gCACT,MAAM;gCACN,QAAQ,EAAE,GAAG,CAAC,MAAM,CAA0B;gCAC9C,MAAM,EAAI,GAAG,CAAC,QAAQ,CAAyB;gCAC/C,OAAO,EAAG,GAAG,CAAC,SAAS,CAAuB;gCAC9C,MAAM,EAAI,GAAG,CAAC,QAAQ,CAAwB;gCAC9C,IAAI,EAAM,GAAG,CAAC,MAAM,CAA0B;gCAC9C,SAAS,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC;gCACtC,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC;6BAC3C,CAAC,CAAC;wBACL,CAAC;wBACD,OAAO;oBACT,CAAC;oBAED,oEAAoE;oBACpE,mEAAmE;oBACnE,qEAAqE;oBACrE,IAAI,OAAO,IAAI,UAAU,CAAC,WAAW,CAAC,OAAO,EAAE,GAAG,CAAC,EAAE,CAAC;wBAAC,OAAO;oBAAC,CAAC;oBAChE,IAAI,OAAO,IAAI,UAAU,CAAC,WAAW,CAAC,OAAO,EAAE,GAAG,CAAC,EAAE,CAAC;wBAAC,OAAO;oBAAC,CAAC;oBAEhE,gDAAgD;oBAChD,IAAI,OAAO,KAAK,YAAY,EAAE,CAAC;wBAC7B,MAAM,OAAO,GAAG,GAAG,CAAC,YAAY,CAAwC,CAAC;wBACzE,IAAI,OAAO,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;4BAAC,eAAe,CAAC,OAAO,CAAC,CAAC;wBAAC,CAAC;wBACzE,OAAO;oBACT,CAAC;oBAED,MAAM,MAAM,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC;oBACjC,IAAI,MAAM,EAAE,CAAC;wBACX,4DAA4D;wBAC5D,SAAS,CAAC,KAAK,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,IAAI,MAAM,EAAE,CAAC,CAAC;wBACrD,oEAAoE;wBACpE,IAAI,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,uBAAuB,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC;oBAC7H,CAAC;gBACH,CAAC;aACF,CAAC,CAAC;YACH,MAAM,CAAC,KAAK,EAAE,CAAC;QACjB,CAAC,CAAC;QACF,KAAK,WAAW,EAAE,CAAC;QAEnB,wEAAwE;QACxE,gCAAgC;QAChC,IAAI,QAAQ,GAAG,CAAC,CAAC;QACjB,IAAI,MAAM,GAAG,KAAK,CAAC;QACnB,MAAM,SAAS,GAAG,GAAS,EAAE;YAC3B,IAAI,MAAM,IAAI,QAAQ,KAAK,CAAC,EAAE,CAAC;gBAC7B,UAAU,CAAC,OAAO,EAAE,CAAC;gBACrB,UAAU,CAAC,OAAO,EAAE,CAAC;gBACrB,MAAM,EAAE,OAAO,EAAE,CAAC;gBAClB,oEAAoE;gBACpE,+CAA+C;gBAC/C,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;YAClD,CAAC;QACH,CAAC,CAAC;QAEF,EAAE,CAAC,EAAE,CAAC,MAAM,EAAE,KAAK,EAAE,IAAY,EAAE,EAAE;YACnC,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;YACtB,IAAI,CAAC,CAAC,EAAE,CAAC;gBAAC,OAAO;YAAC,CAAC;YACnB,IAAI,GAAsC,CAAC;YAC3C,IAAI,CAAC;gBAAC,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YAAC,CAAC;YAAC,MAAM,CAAC;gBAAC,OAAO;YAAC,CAAC;YAE9C,oEAAoE;YACpE,wEAAwE;YACxE,IAAI,GAAG,CAAC,EAAE,KAAK,SAAS,IAAI,GAAG,CAAC,EAAE,KAAK,IAAI,EAAE,CAAC;gBAC5C,IAAI,OAAO,GAAG,CAAC,MAAM,KAAK,QAAQ,IAAI,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC,gBAAgB,CAAC,EAAE,CAAC;oBAC9E,KAAK,CAAC,QAAQ,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAqB,CAAC,CAAC,CAAC;gBAC/D,CAAC;gBACD,OAAO;YACT,CAAC;YAED,uEAAuE;YACvE,yEAAyE;YACzE,MAAM,MAAM,GAAI,GAAiF,CAAC,MAAM,CAAC;YACzG,IAAI,GAAG,CAAC,MAAM,KAAK,YAAY,IAAI,MAAM,EAAE,IAAI,KAAK,iBAAiB,EAAE,CAAC;gBACtE,QAAQ,EAAE,CAAC;gBACX,IAAI,CAAC;oBACH,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,EAAE,eAAe,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;oBACzF,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;wBAAC,MAAM,YAAY,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC;oBAAC,CAAC;oBACjE,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC;oBACvD,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM;wBACxB,CAAC,CAAC,oBAAoB,MAAM,CAAC,MAAM,SAAS,MAAM,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,oGAAoG;wBACtM,CAAC,CAAC,oBAAoB,IAAI,kDAAkD,CAAC;oBAC/E,IAAI,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;gBACtF,CAAC;wBAAS,CAAC;oBAAC,QAAQ,EAAE,CAAC;oBAAC,SAAS,EAAE,CAAC;gBAAC,CAAC;gBACtC,OAAO;YACT,CAAC;YAED,QAAQ,EAAE,CAAC;YACX,IAAI,CAAC;gBACH,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,QAAQ,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;gBAC5C,uEAAuE;gBACvE,IAAI,GAAG,CAAC,MAAM,KAAK,YAAY,EAAE,CAAC;oBAChC,MAAM,MAAM,GAAG,GAAG,CAAC,QAAQ,CAAsC,CAAC;oBAClE,IAAI,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;wBAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;oBAAC,CAAC;gBAC9E,CAAC;gBACD,IAAI,CAAC,GAAG,CAAC,CAAC;YACZ,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,IAAI,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,eAAe,GAAG,CAAE,CAAW,EAAE,OAAO,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACjI,CAAC;oBAAS,CAAC;gBACT,QAAQ,EAAE,CAAC;gBACX,SAAS,EAAE,CAAC;YACd,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,GAAG,MAAM,GAAG,IAAI,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IACxD,CAAC,CAAC,CAAC;AACP,CAAC"}
@@ -0,0 +1,21 @@
1
+ export interface HandleFbRequestOptions {
2
+ /** Absolute workspace root, or null/undefined when none is configured. */
3
+ root: string | null | undefined;
4
+ /** Whether the file browser is enabled for this agent. */
5
+ enabled: boolean;
6
+ requestId: string;
7
+ action: string;
8
+ relPath: string;
9
+ content?: string;
10
+ newPath?: string;
11
+ query?: string;
12
+ /** Send a frame back to the server (the caller's WS sendFrame). */
13
+ sendFrame: (frame: Record<string, unknown>) => void;
14
+ /** Optional logger (unused today, accepted for parity/future use). */
15
+ log?: (m: string) => void;
16
+ }
17
+ /**
18
+ * Handle a file-browser request from the server (originated by the browser UI).
19
+ * Replies via `sendFrame({ type:'fb_response', requestId, ok, ...extra })`.
20
+ */
21
+ export declare function handleFbRequest(opts: HandleFbRequestOptions): void;
@@ -0,0 +1,205 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.handleFbRequest = handleFbRequest;
37
+ const fs = __importStar(require("fs"));
38
+ const path = __importStar(require("path"));
39
+ const pathSafe_1 = require("./core/pathSafe");
40
+ /**
41
+ * Handle a file-browser request from the server (originated by the browser UI).
42
+ * Replies via `sendFrame({ type:'fb_response', requestId, ok, ...extra })`.
43
+ */
44
+ function handleFbRequest(opts) {
45
+ const { requestId, action, relPath, content, newPath, query, sendFrame } = opts;
46
+ const respond = (ok, extra) => {
47
+ sendFrame({ type: 'fb_response', requestId, ok, ...extra });
48
+ };
49
+ if (!opts.enabled) {
50
+ respond(false, { error: 'File browser not enabled' });
51
+ return;
52
+ }
53
+ const root = opts.root;
54
+ if (!root) {
55
+ respond(false, { error: 'No workspace root configured' });
56
+ return;
57
+ }
58
+ // Resolve and validate path is within workspace root. The root itself is
59
+ // permitted for read-only actions (list/search) but never for mutations.
60
+ // Containment is lexical AND canonical (realpath) — a workspace symlink
61
+ // pointing outside must not let a remote fb_request read/write host files.
62
+ const resolveSafe = (rel, allowRoot) => (0, pathSafe_1.resolveWithinRoot)(root, rel, allowRoot);
63
+ const MUTATING = new Set(['write', 'delete', 'rename', 'mkdir']);
64
+ const allowRoot = !MUTATING.has(action);
65
+ const absPath = resolveSafe(relPath, allowRoot);
66
+ if (!absPath) {
67
+ respond(false, {
68
+ error: allowRoot ? 'Path outside workspace' : 'Refusing to modify workspace root',
69
+ });
70
+ return;
71
+ }
72
+ try {
73
+ switch (action) {
74
+ case 'list': {
75
+ const entries = fs.readdirSync(absPath, { withFileTypes: true }).map(e => {
76
+ const stat = (() => { try {
77
+ return fs.statSync(path.join(absPath, e.name));
78
+ }
79
+ catch {
80
+ return null;
81
+ } })();
82
+ return {
83
+ name: e.name,
84
+ type: e.isDirectory() ? 'dir' : 'file',
85
+ size: stat?.size ?? 0,
86
+ mtime: stat?.mtimeMs ?? 0,
87
+ };
88
+ });
89
+ // Dirs first, then files; both alphabetical
90
+ entries.sort((a, b) => {
91
+ if (a.type !== b.type) {
92
+ return a.type === 'dir' ? -1 : 1;
93
+ }
94
+ return a.name.localeCompare(b.name);
95
+ });
96
+ respond(true, { entries });
97
+ break;
98
+ }
99
+ case 'read': {
100
+ const stat = fs.statSync(absPath);
101
+ const MAX_BYTES = 1_048_576; // 1 MB
102
+ if (stat.size > MAX_BYTES) {
103
+ respond(false, { error: `File too large (${stat.size} bytes, limit 1 MB)` });
104
+ break;
105
+ }
106
+ // Binary detection: read first 512 bytes and check for null bytes
107
+ const sample = Buffer.allocUnsafe(Math.min(512, stat.size));
108
+ const fd = fs.openSync(absPath, 'r');
109
+ fs.readSync(fd, sample, 0, sample.length, 0);
110
+ fs.closeSync(fd);
111
+ const isBinary = sample.includes(0x00);
112
+ if (isBinary) {
113
+ respond(false, { error: 'Binary file — cannot display' });
114
+ break;
115
+ }
116
+ const fileContent = fs.readFileSync(absPath, 'utf8');
117
+ respond(true, { content: fileContent });
118
+ break;
119
+ }
120
+ case 'write': {
121
+ if (content === undefined) {
122
+ respond(false, { error: 'No content provided' });
123
+ break;
124
+ }
125
+ fs.writeFileSync(absPath, content, 'utf8');
126
+ respond(true);
127
+ break;
128
+ }
129
+ case 'delete': {
130
+ fs.rmSync(absPath, { recursive: true, force: true });
131
+ respond(true);
132
+ break;
133
+ }
134
+ case 'rename': {
135
+ if (!newPath) {
136
+ respond(false, { error: 'No newPath provided' });
137
+ break;
138
+ }
139
+ const absNewPath = resolveSafe(newPath, false);
140
+ if (!absNewPath) {
141
+ respond(false, { error: 'newPath outside workspace' });
142
+ break;
143
+ }
144
+ fs.renameSync(absPath, absNewPath);
145
+ respond(true);
146
+ break;
147
+ }
148
+ case 'download': {
149
+ const stat = fs.statSync(absPath);
150
+ const MAX_DOWNLOAD_BYTES = 25 * 1_048_576; // 25 MB — base64 ~1.33x in heap
151
+ if (stat.size > MAX_DOWNLOAD_BYTES) {
152
+ respond(false, { error: `File too large (${stat.size} bytes, limit 25 MB)` });
153
+ break;
154
+ }
155
+ const buf = fs.readFileSync(absPath);
156
+ respond(true, { base64: buf.toString('base64') });
157
+ break;
158
+ }
159
+ case 'mkdir': {
160
+ fs.mkdirSync(absPath, { recursive: true });
161
+ respond(true);
162
+ break;
163
+ }
164
+ case 'search': {
165
+ const rawQuery = (query ?? '').toLowerCase().trim();
166
+ if (!rawQuery) {
167
+ respond(true, { results: [] });
168
+ break;
169
+ }
170
+ const results = [];
171
+ const walk = (dir, relDir, depth) => {
172
+ if (depth > 8 || results.length >= 300)
173
+ return;
174
+ let dirents;
175
+ try {
176
+ dirents = fs.readdirSync(dir, { withFileTypes: true });
177
+ }
178
+ catch {
179
+ return;
180
+ }
181
+ for (const e of dirents) {
182
+ if (results.length >= 300)
183
+ break;
184
+ const rel = relDir ? `${relDir}/${e.name}` : e.name;
185
+ if (e.name.toLowerCase().includes(rawQuery)) {
186
+ results.push({ path: rel, name: e.name, type: e.isDirectory() ? 'dir' : 'file' });
187
+ }
188
+ if (e.isDirectory() && !e.name.startsWith('.') && e.name !== 'node_modules' && e.name !== 'vendor') {
189
+ walk(path.join(dir, e.name), rel, depth + 1);
190
+ }
191
+ }
192
+ };
193
+ walk(absPath, '', 0);
194
+ respond(true, { results });
195
+ break;
196
+ }
197
+ default:
198
+ respond(false, { error: `Unknown action: ${action}` });
199
+ }
200
+ }
201
+ catch (err) {
202
+ respond(false, { error: String(err) });
203
+ }
204
+ }
205
+ //# sourceMappingURL=fileBrowser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fileBrowser.js","sourceRoot":"","sources":["../src/fileBrowser.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAyCA,0CA6JC;AAtMD,uCAAyB;AACzB,2CAA6B;AAC7B,8CAAoD;AAmCpD;;;GAGG;AACH,SAAgB,eAAe,CAAC,IAA4B;IAC1D,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,IAAI,CAAC;IAEhF,MAAM,OAAO,GAAG,CAAC,EAAW,EAAE,KAA+B,EAAE,EAAE;QAC/D,SAAS,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,SAAS,EAAE,EAAE,EAAE,GAAG,KAAK,EAAE,CAAC,CAAC;IAC9D,CAAC,CAAC;IAEF,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;QAClB,OAAO,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,0BAA0B,EAAE,CAAC,CAAC;QACtD,OAAO;IACT,CAAC;IAED,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;IACvB,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,OAAO,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,8BAA8B,EAAE,CAAC,CAAC;QAC1D,OAAO;IACT,CAAC;IAED,yEAAyE;IACzE,yEAAyE;IACzE,wEAAwE;IACxE,2EAA2E;IAC3E,MAAM,WAAW,GAAG,CAAC,GAAW,EAAE,SAAkB,EAAiB,EAAE,CACrE,IAAA,4BAAiB,EAAC,IAAI,EAAE,GAAG,EAAE,SAAS,CAAC,CAAC;IAE1C,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,CAAC,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC;IACjE,MAAM,SAAS,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACxC,MAAM,OAAO,GAAG,WAAW,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;IAChD,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,EAAE;YACb,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,mCAAmC;SAClF,CAAC,CAAC;QACH,OAAO;IACT,CAAC;IAED,IAAI,CAAC;QACH,QAAQ,MAAM,EAAE,CAAC;YACf,KAAK,MAAM,CAAC,CAAC,CAAC;gBACZ,MAAM,OAAO,GAAG,EAAE,CAAC,WAAW,CAAC,OAAO,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;oBACvE,MAAM,IAAI,GAAG,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC;wBAAC,OAAO,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;oBAAC,CAAC;oBAAC,MAAM,CAAC;wBAAC,OAAO,IAAI,CAAC;oBAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;oBAC1G,OAAO;wBACL,IAAI,EAAE,CAAC,CAAC,IAAI;wBACZ,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM;wBACtC,IAAI,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC;wBACrB,KAAK,EAAE,IAAI,EAAE,OAAO,IAAI,CAAC;qBAC1B,CAAC;gBACJ,CAAC,CAAC,CAAC;gBACH,4CAA4C;gBAC5C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;oBACpB,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC;wBAAC,OAAO,CAAC,CAAC,IAAI,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;oBAAC,CAAC;oBAC5D,OAAO,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;gBACtC,CAAC,CAAC,CAAC;gBACH,OAAO,CAAC,IAAI,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;gBAC3B,MAAM;YACR,CAAC;YAED,KAAK,MAAM,CAAC,CAAC,CAAC;gBACZ,MAAM,IAAI,GAAG,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;gBAClC,MAAM,SAAS,GAAG,SAAS,CAAC,CAAC,OAAO;gBACpC,IAAI,IAAI,CAAC,IAAI,GAAG,SAAS,EAAE,CAAC;oBAC1B,OAAO,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,mBAAmB,IAAI,CAAC,IAAI,qBAAqB,EAAE,CAAC,CAAC;oBAC7E,MAAM;gBACR,CAAC;gBACD,kEAAkE;gBAClE,MAAM,MAAM,GAAG,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;gBAC5D,MAAM,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;gBACrC,EAAE,CAAC,QAAQ,CAAC,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;gBAC7C,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;gBACjB,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;gBACvC,IAAI,QAAQ,EAAE,CAAC;oBACb,OAAO,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,8BAA8B,EAAE,CAAC,CAAC;oBAC1D,MAAM;gBACR,CAAC;gBACD,MAAM,WAAW,GAAG,EAAE,CAAC,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;gBACrD,OAAO,CAAC,IAAI,EAAE,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC,CAAC;gBACxC,MAAM;YACR,CAAC;YAED,KAAK,OAAO,CAAC,CAAC,CAAC;gBACb,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;oBAC1B,OAAO,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,qBAAqB,EAAE,CAAC,CAAC;oBACjD,MAAM;gBACR,CAAC;gBACD,EAAE,CAAC,aAAa,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;gBAC3C,OAAO,CAAC,IAAI,CAAC,CAAC;gBACd,MAAM;YACR,CAAC;YAED,KAAK,QAAQ,CAAC,CAAC,CAAC;gBACd,EAAE,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;gBACrD,OAAO,CAAC,IAAI,CAAC,CAAC;gBACd,MAAM;YACR,CAAC;YAED,KAAK,QAAQ,CAAC,CAAC,CAAC;gBACd,IAAI,CAAC,OAAO,EAAE,CAAC;oBACb,OAAO,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,qBAAqB,EAAE,CAAC,CAAC;oBACjD,MAAM;gBACR,CAAC;gBACD,MAAM,UAAU,GAAG,WAAW,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;gBAC/C,IAAI,CAAC,UAAU,EAAE,CAAC;oBAChB,OAAO,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,2BAA2B,EAAE,CAAC,CAAC;oBACvD,MAAM;gBACR,CAAC;gBACD,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;gBACnC,OAAO,CAAC,IAAI,CAAC,CAAC;gBACd,MAAM;YACR,CAAC;YAED,KAAK,UAAU,CAAC,CAAC,CAAC;gBAChB,MAAM,IAAI,GAAG,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;gBAClC,MAAM,kBAAkB,GAAG,EAAE,GAAG,SAAS,CAAC,CAAC,gCAAgC;gBAC3E,IAAI,IAAI,CAAC,IAAI,GAAG,kBAAkB,EAAE,CAAC;oBACnC,OAAO,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,mBAAmB,IAAI,CAAC,IAAI,sBAAsB,EAAE,CAAC,CAAC;oBAC9E,MAAM;gBACR,CAAC;gBACD,MAAM,GAAG,GAAG,EAAE,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;gBACrC,OAAO,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;gBAClD,MAAM;YACR,CAAC;YAED,KAAK,OAAO,CAAC,CAAC,CAAC;gBACb,EAAE,CAAC,SAAS,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;gBAC3C,OAAO,CAAC,IAAI,CAAC,CAAC;gBACd,MAAM;YACR,CAAC;YAED,KAAK,QAAQ,CAAC,CAAC,CAAC;gBACd,MAAM,QAAQ,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,CAAC;gBACpD,IAAI,CAAC,QAAQ,EAAE,CAAC;oBAAC,OAAO,CAAC,IAAI,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC;oBAAC,MAAM;gBAAC,CAAC;gBACzD,MAAM,OAAO,GAAmD,EAAE,CAAC;gBACnE,MAAM,IAAI,GAAG,CAAC,GAAW,EAAE,MAAc,EAAE,KAAa,EAAE,EAAE;oBAC1D,IAAI,KAAK,GAAG,CAAC,IAAI,OAAO,CAAC,MAAM,IAAI,GAAG;wBAAE,OAAO;oBAC/C,IAAI,OAAoB,CAAC;oBACzB,IAAI,CAAC;wBAAC,OAAO,GAAG,EAAE,CAAC,WAAW,CAAC,GAAG,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;oBAAC,CAAC;oBAAC,MAAM,CAAC;wBAAC,OAAO;oBAAC,CAAC;oBACjF,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;wBACxB,IAAI,OAAO,CAAC,MAAM,IAAI,GAAG;4BAAE,MAAM;wBACjC,MAAM,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;wBACpD,IAAI,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;4BAC5C,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;wBACpF,CAAC;wBACD,IAAI,CAAC,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,cAAc,IAAI,CAAC,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;4BACnG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC;wBAC/C,CAAC;oBACH,CAAC;gBACH,CAAC,CAAC;gBACF,IAAI,CAAC,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;gBACrB,OAAO,CAAC,IAAI,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;gBAC3B,MAAM;YACR,CAAC;YAED;gBACE,OAAO,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,mBAAmB,MAAM,EAAE,EAAE,CAAC,CAAC;QAC3D,CAAC;IACH,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IACzC,CAAC;AACH,CAAC"}
@@ -0,0 +1,22 @@
1
+ export interface HandleGitRequestOptions {
2
+ /** Absolute workspace root, or null/undefined when none is configured. */
3
+ root: string | null | undefined;
4
+ /** Whether the git panel is enabled for this agent. */
5
+ enabled: boolean;
6
+ requestId: string;
7
+ action: string;
8
+ filePath?: string;
9
+ staged?: boolean;
10
+ message?: string;
11
+ branch?: string;
12
+ hash?: string;
13
+ /** Send a frame back to the server (the caller's WS sendFrame). */
14
+ sendFrame: (frame: Record<string, unknown>) => void;
15
+ /** Optional logger (unused today, accepted for parity/future use). */
16
+ log?: (m: string) => void;
17
+ }
18
+ /**
19
+ * Handle a git-panel request from the server (originated by the browser UI).
20
+ * Replies via `sendFrame({ type:'git_response', requestId, ok, ...extra })`.
21
+ */
22
+ export declare function handleGitRequest(opts: HandleGitRequestOptions): void;